私のアプリケーションでは、ホームボタンを押すと、アクティビティがonDestroy()
. onPause()
メソッドだけと呼ばれるはずですよね?
なぜそれが起こっているのですか?
私のアプリケーションでは、ホームボタンを押すと、アクティビティがonDestroy()
. onPause()
メソッドだけと呼ばれるはずですよね?
なぜそれが起こっているのですか?
携帯電話のメモリ容量によって異なります。携帯電話のメモリ容量が少ない場合は、アクティビティを破棄してリソースをすぐに解放します。新しい電話では、予備のメモリが十分にあるため、これは発生しません。
システムに制約があり、一部のリソースを解放する必要があると判断された場合、ホーム ボタンを押すとアクティビティが破棄される可能性があります。ドキュメントには、次のonDestroy()
場合に呼び出すことができると記載されています。
これは、アクティビティが終了している (finish() が呼び出された) ため、またはシステムがスペースを節約するためにアクティビティのこのインスタンスを一時的に破棄しているために発生する可能性があります。これら 2 つのシナリオは、isFinishing() メソッドで区別できます。
さらに、システムは、呼び出された後にkill
呼び出さずにプログラムを実行できることに注意してください。したがって、クリーンアップ/データ永続化コードは、 または のいずれかにある必要があります。onDestroy()
onStop()
onPause()
onStop()
まあ、それは多くの要因に依存します。Android 3.2 以降のデバイスでこの問題に直面している場合は、screenSize プロパティを android:configChanges に追加する必要があります。
android:configChanges="keyboardHidden|orientation|screenSize"
さらに、ランチャー アクティビティに android:launchMode="singleTop" も追加します。ターゲットとして Android SDK 15 以降を使用する必要があることに注意してください。ただし、アプリは古いデバイスでも動作します。お役に立てれば。