2012-07-24 110 views
11

私のアプリケーションがアイドル状態になると、Androidがプロセスを強制終了します。 ユーザーがしばらくしてからアプリケーションを再開した場合は、一番上のアクティビティのみが作成されます。これは、アクティビティが他のオブジェクト(現在は破棄されている)の初期化に依存するためです。プロセスが終了した後にAndroidアプリケーションを再起動する

私がこの場合にやりたいことは、アプリケーションを再起動することです。 どうすればいいですか?

+0

Androidのは、メモリを解放するためにアプリケーションを殺します。したがって、アプリケーションがアイドル状態の場合、OSが他のプログラムを実行するためにメモリを必要とするときにいつか終了する可能性があります。 – gkris

+0

_vital_ _objects_を実行し続けるために、バックグラウンドでサービスが必要なことがあります。 'Sticky Intent'を使って、サービスが強制終了されたときにサービスが再起動されることを確認することができます。 – DroidBender

答えて

0

Applicationクラスのアプリの実装にこのようなオブジェクトを格納することを検討しているはずです。

これらのオブジェクトには、より永続性が必要な状態が含まれている場合は、各アクティビティのonPause()メソッドのオブジェクトの状態をSharedPreferencesまたはリモートのデータベースに保存する必要があります。

+6

あなたが 'Application'クラスにそれらを残しても、プロセスが' Android'によって殺された後、オブジェクトは失われ、あなたは "initialization activity"で始まらず、最後に見えるもので始まります。 –

7

はちょうどあなたのApplicationは、それが以前のAndroidによって破壊された後、カスタムApplicationクラスの変数を保つことによってこれを行うことができ、そして、あなたのapplicaitonが初期化された後trueにそれを設定し発売していることを確認します。だから、applicactionが再起動されたときに、このフラグはfalseで、その後、ちょうどあなたのメインActivityFLAG_ACTIVITY_CLEAR_TOPを指定して起動するIntentします

Intent reLaunchMain=new Intent(this,MainActivity.class); 
reLaunchMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(reLaunchMain); 
+0

このコードはどこに置くべきですか?私がそれを行うとクラッシュするアクティビティ –

+0

あなたはどんな例外を得ますか? Androidでアプリケーションが再起動されたときにこれを呼び出す必要があります。 –

+0

@OvidiuLatcuこんにちは、あなたが(再作成する)アクティビティがランチャーではないときに再作成されたApplicationオブジェクトですか?私は、アクティビティが再作成されたときにデバッガを接続することができないので、これを尋ねる必要があります。 Tks –

0

を私はあなたのため、この答えを考えます。

は仕上げ進捗呼び出した後、この

 finish(); 
     Intent intent = new Intent(this, sameactivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
関連する問題