0

ユーザーがアクティビティを離れると、Androidは最近のアプリに移動します。 Androidがより多くのメモリを必要とするとき、アプリを「殺す」 - すべてのアクティビティオブジェクトをアンロードし、もはや存在しなくなります。ユーザは最近のアプリでアプリをクリックして、ユーザが放置したアクティビティを開始することができます。これによりnullPointerExceptionが発生することがよくあります。 SharedPreferences、database、またはsavedInstanceStateを使ってデータを保存することで、それを防ぐことができます。テスト用のシステムリソースが不足してAndroid OSがアクティビティを強制終了する方法を教えてください

Androidがアクティビティのオブジェクトをアンロードするのを待たずにデータを正しく保存したかどうかをテストするにはどうすればよいですか?つまり、Androidに自分のアクティビティを「強制終了」させるにはどうすればよいですか?

+0

[この写真](http://www.ekoob.com/wp-content/uploads/2012/08/close-active-applications-android.png)のようなアクティブなアプリケーションでアプリを強制停止することができます。それを手動で元に戻します。それはあなたが求めていたものですか? – Vucko

+0

@Vucko実際には、これは実際にはアクティビティのオブジェクトをアンロードしますが、recentsでアプリをクリックすると、Androidは古いアクティビティを再開するのではなく、デフォルトのアクティビティを開始します。 – cuddlecheek

答えて

4

Developer optionsにはAppsというセクションがあります。 Do not keep activitiesがオンになっていることを確認すると、この動作をテストできます。あなたが終わったらそれをオフにすることを忘れないでください。またはあなたのアプリで奇妙なライフサイクルの動作を後でデバッグすることになります。

1

端末を回転するだけで、再びアクティビティが再作成されます。そうすれば、あなたの問題をシミュレートすることができます。しかしこれを追加するには、 "OnSaveInstance"でnullポインタ例外を受け取っている変数の状態を保存し、 "OnRestoreInstance"でそれを復元してください。これはあなたの問題を解決します。

以下のいずれかのプロパティがアクティビティに追加されていないことを確認してください。

android:configChanges="keyboardHidden|orientation" 

or

android:screenOrientation="landscape" or portrait is not set. 

その場合は、デバイスを回転させたときに活性を再作成しないので。

+0

ありがとう、私はそれを試してみましょう。 – cuddlecheek

+0

+1。これは役に立ちます、ありがとう、しかしC0D3LIC1OU5の答えは私の目的のために良いですので、私は彼のものを受け入れます。 – cuddlecheek

関連する問題