2012-05-03 9 views
1

を閉じた後、バックグラウンドで実行されている私のアプリを閉じることができますし、私はいくつかの新しいアクティビティに移動するとき、私はは、どのように私はまだ私のアプリケーションが正常に動作している

Intent start=new Intent(current activity.this,new activity.class); 
       startActivityForResult(start, 0); 
       finish(); 

ようなコードを使用して、私は戻って移動しなければならないとき以前の活動に私は次のコードを使用しました

Intent start = new Intent(current activity.this,earlier activity.class); 
        startActivity(start); 
        finishActivity(0); 

私はこのようにして活動の積み重ねが明確になると思います。そして、ボタンをクリックするか、携帯電話の戻るボタンで、私は次のコード

Intent startMain = new Intent(Intent.ACTION_MAIN); 
       startMain.addCategory(Intent.CATEGORY_HOME); 
       startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(startMain); 

を使用しかし、私のアプリケーションは、バックグラウンドで実行されています。私はまた、android:noHistory="true"アプリがバックグラウンドから殺されたのを使用しましたが、メッセージはそのアプリを強制的に閉じていました。単純finish();が最後のアクティビティに移動します。 私もリンクQuitting an application - is that frowned upon?を見たが、私は新しいので、多くを得ることはできませんでした。どのように私はこれに対処することができますいくつかの方法を提案してください。

+4

再開可能な[タスク](http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html)の概念全体を台無しにして、自動的に管理する理由がありますかアプリケーションのライフサイクル? – zapl

+0

私は合計8つのアクティビティを持ち、コントロールは1つずつ移動します。特別な理由はありません。 – BraveGirl

答えて

1

私は、このように活動の積み重ねが、あなたはあなたの意見を歓迎している

明らかかもしれないと思います。 startActivityForResult()は、使用方法に応じて設計されていません。私はこれをしなかった人私のために働いた人を解雇でしょう

、ボタンのクリックや電話の戻るボタンで、私は次のコード

を使用。

Android design guidelines for proper handling of the BACK buttonに従ってください - 私はそこにあるすべてに同意しませんが、あなたのやっていることよりはるかに優れています。ユーザの目には、BACK means back

しかし、私のアプリケーションは、まだあなたが任意のスレッドやサービスを漏洩していない限り

は、あなたのプロセスが実行されるバックグラウンドで実行されているが、それは有意なCPU時間を消費しません。 AndroidはRAMが必要なときにプロセスを終了します。このようにして、ユーザーがアプリケーションに戻ることを選択するか、アプリケーション内の何かを実行する必要がある場合(たとえば、 AlarmManagerイベント、ブロードキャスト Intent)、Androidは別のプロセスをフォークするためにCPU時間とバッテリ寿命を浪費する必要はありません。

どうすればこの問題に対処できますか。

プロセスをそのままにしておくと、誰も怪我をすることはありません。

+0

は、バックグラウンドでアプリケーションを使用していることを示しています。そのアプリはその時に動作していますか? – BraveGirl

+0

@BraveGirl: "当時はそのアプリが走っていますか?" - それはあなたが「走っている」ことによって何を意味するかに依存します。独自のバックグラウンドスレッドをまだ実行している場合、それらは引き続き作業を行いますので、それらのスレッドを停止する時間を見つけることが重要です。それを超えると、あなたのコードの多くは実行されません。ユーザーにとっての第一のコストは、あなたが消費しているRAMのチャンクだけであり、AndroidはそのRAMをより良く使うとすぐにプロセスを終了させます。 – CommonsWare

+0

はい私は自分のアプリケーションでタイマーのための1つのスレッドを使用しているどのようにそのスレッドを停止することができます。どうすればこれらのスレッドを適切に停止できますか教えてください。実行中はバックグラウンドで実行され、タスクマネージャーからチェックされました。 – BraveGirl

関連する問題