私のアプリケーションがアイドル状態になると、Androidがプロセスを強制終了します。 ユーザーがしばらくしてからアプリケーションを再開した場合は、一番上のアクティビティのみが作成されます。これは、アクティビティが他のオブジェクト(現在は破棄されている)の初期化に依存するためです。プロセスが終了した後にAndroidアプリケーションを再起動する
私がこの場合にやりたいことは、アプリケーションを再起動することです。 どうすればいいですか?
私のアプリケーションがアイドル状態になると、Androidがプロセスを強制終了します。 ユーザーがしばらくしてからアプリケーションを再開した場合は、一番上のアクティビティのみが作成されます。これは、アクティビティが他のオブジェクト(現在は破棄されている)の初期化に依存するためです。プロセスが終了した後にAndroidアプリケーションを再起動する
私がこの場合にやりたいことは、アプリケーションを再起動することです。 どうすればいいですか?
Application
クラスのアプリの実装にこのようなオブジェクトを格納することを検討しているはずです。
これらのオブジェクトには、より永続性が必要な状態が含まれている場合は、各アクティビティのonPause()
メソッドのオブジェクトの状態をSharedPreferencesまたはリモートのデータベースに保存する必要があります。
あなたが 'Application'クラスにそれらを残しても、プロセスが' Android'によって殺された後、オブジェクトは失われ、あなたは "initialization activity"で始まらず、最後に見えるもので始まります。 –
はちょうどあなたのApplication
は、それが以前のAndroidによって破壊された後、カスタムApplication
クラスの変数を保つことによってこれを行うことができ、そして、あなたのapplicaitonが初期化された後true
にそれを設定し発売していることを確認します。だから、applicactionが再起動されたときに、このフラグはfalseで、その後、ちょうどあなたのメインActivity
はFLAG_ACTIVITY_CLEAR_TOP
を指定して起動するIntent
します
Intent reLaunchMain=new Intent(this,MainActivity.class);
reLaunchMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(reLaunchMain);
このコードはどこに置くべきですか?私がそれを行うとクラッシュするアクティビティ –
あなたはどんな例外を得ますか? Androidでアプリケーションが再起動されたときにこれを呼び出す必要があります。 –
@OvidiuLatcuこんにちは、あなたが(再作成する)アクティビティがランチャーではないときに再作成されたApplicationオブジェクトですか?私は、アクティビティが再作成されたときにデバッガを接続することができないので、これを尋ねる必要があります。 Tks –
を私はあなたのため、この答えを考えます。
は仕上げ進捗呼び出した後、この
finish();
Intent intent = new Intent(this, sameactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Androidのは、メモリを解放するためにアプリケーションを殺します。したがって、アプリケーションがアイドル状態の場合、OSが他のプログラムを実行するためにメモリを必要とするときにいつか終了する可能性があります。 – gkris
_vital_ _objects_を実行し続けるために、バックグラウンドでサービスが必要なことがあります。 'Sticky Intent'を使って、サービスが強制終了されたときにサービスが再起動されることを確認することができます。 – DroidBender