3

onPauseアクティビティを終了/終了し、それを通過させたいAndroidの方法は何onStopですかonDestroy?

私は知っていますが、それは他の2つではなくActivity.finish()呼び出しを保証するだけです。onDestroy()Androidのドキュメントに基づいて、データベースへのアクセスを行う必要がある理由はonStop()、ユーザーの速度が低下しないようにするためです。これは、すべての「保存」をonStop().finish()と呼ばれる...

それで..この場合の解決策は何ですか?つまり、変数を作成することはできますbooleanが、もっと洗練された方法はありますか? 呼び出しなど、アクティビティを終了する別の方法でさえ、onDestory()それは何か間違ったことですか?

編集

申し訳ありませんが、その部分をタイプミスしました。onStop()ではなく でデータベースに保存すると言うつもりでしたonDestroy()

onPause() メソッドは onStop() の前に呼び出されますが、データベースへの情報の書き込みなど、より大規模で CPU 集中型のシャットダウン操作を実行するには、onStop() を使用する必要があります。

ソース

4

2 に答える 2

1

Activity.finish の呼び出しは、アクティビティのライフサイクルを通過します: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

onDestroy()のドキュメントにも次のように記載されています。

注: このメソッドがデータを保存する場所として呼び出されるとは考えないでください。

onPause()の状態:

This callback is mostly used for saving any persistent state the activity is editing, to present a "edit in place" model to the user and making sure nothing is lost if there are not enough resources to start the new activity without first killing this one. This is also a good place to do things like stop animations and other things that consume a noticeable amount of CPU in order to make the switch to the next activity as fast as possible, or to close resources that are exclusive access such as the camera.

最後に、onStop()について:

このメソッドは、 onPause() メソッドが呼び出された後にアクティビティのプロセスを実行し続けるのに十分なメモリがシステムにないメモリ不足の状況では呼び出されないことに注意してください。

これにより、オーバーライドしていくつかの保存を実行する方法としてonPause()だけが残ります。そして、それは確かに呼ばれています。

ここで関連する質問が見つかりました: finish() とアクティビティのライフサイクル

于 2013-05-11T10:19:46.517 に答える
0

ドキュメントによると、「システムが緊急時にメモリを回復する必要がある場合、onStop() および onDestroy() は呼び出されない可能性があります。したがって、onPause() を使用して重要な永続データ (ユーザー編集など) をストレージに書き込む必要があります。ただし、onPause() 中にどの情報を保持する必要があるかを選択する必要があります。これは、このメソッドのブロック手順が次のアクティビティへの移行をブロックし、ユーザー エクスペリエンスを遅くするためです。」

つまり、OnPause()は DB 操作の正しい方法ですが、UI 遷移をブロックするには重すぎる場合にのみ、OnStop()で実行する必要があります。

于 2015-02-16T11:03:20.893 に答える