6

を使用していくつかの変数を保存しようとしていますSharedPreferences。私のonCreate()メソッドではSharedPreferences、を使用して変数を初期化し、アプリケーションが終了したときにこの変数を格納する必要があります。このコードをonTerminate()メソッドに配置していますが、変数が保存されることはありません。onTerminate()このメソッドについてのコメントもあるので、メソッドが呼び出されることはないと思います// not guaranteed to be called。では、アプリケーションを停止する直前に変数の状態を保存するにはどうすればよいですか?私は方法を知っています、私は自分のコードをどこに置くべきかわからないだけです。

4

4 に答える 4

8

実際、安全のために、onPause()で物事を保存する必要があります。これは、(少なくとも3.0より前の)OSがonPause()を呼び出した後にプロセスが強制終了される可能性があるためです。これは、onStop()とonDestroy()が呼び出される場合と呼び出されない場合があることを意味します。

いずれにせよ、onDestroy()が呼び出されるという保証はありません。OSがプロセスを強制終了することを決定した場合、アクティビティでonDestroy()を呼び出す必要はありません。

于 2012-06-08T12:32:33.260 に答える
5

そして、アプリケーションが終了したときにこの変数を保存したいと思います。

「アプリケーションが終了する」ときに制御できないため、これは機能しません。

また:

  • データが変更されたときにデータを保存する、または

  • ユーザーが指示したときにデータを保存する(たとえば、ある種の保存アクションバーアイテムを介して)、または

  • onPause()データを変更したアクティビティが呼び出されたときにデータを保存します

于 2012-06-08T12:32:48.877 に答える
5

この関数は使用しないでください。

このメソッドは、エミュレートされたプロセス環境で使用するためのものです。プロセスを強制終了するだけでプロセスが削除される本番Androidデバイスでは呼び出されません。その際、ユーザーコード(このコールバックを含む)は実行されません。

ソース

于 2016-12-19T20:21:38.107 に答える
0

必要に応じて、onPause()でも実行できます。この場合、アプリがフォーカスを失うたびに保存されます。

于 2012-06-08T12:30:17.283 に答える