5

いくつかのアクティビティを持つアプリケーションに取り組んでいます。1 つのアクティビティが次のアクティビティを開始します。いくつかの値を共有するために、 MyApplication と呼ばれるApplication (私はandroid.app.Applicationについて話している) のカスタム実装を使用しています。
ご存知のように、Android システムは、より多くのスペースが必要な場合、アプリを強制終了します。しかし、これは問題を引き起こします:

  • アプリを開いて、他のアプリと同じように使用します
  • 閉じて(ホームボタン)他のアプリを使う
  • メモリを浪費しているため、システムがアプリケーションを強制終了します
  • アプリを再度開くと、最後に使用したアクティビティを開こうとしており、MyApplication の値が null であるため、強制的に閉じられます。

奇妙なことに、システムはアプリケーションを破棄しますが、アクティビティは保持しているようです。アプリケーションにはライフサイクルがないように見えるため、なぜそうなのかよくわかりません。

私がしたいこと:
MyApplication (アクティビティだけでなく、アプリケーション全体) が強制終了されると、最後のアクティビティも強制終了されます。そのため、アプリを再度開くと、manifest.xml によって提供されるメインのアクティビティが開始されます。
または
MyApplication の値は永続化され、アプリケーションが破棄されても失われません。(いくつかのオブジェクトについて話しているので、共有設定は機能しないと思います)。
アクティビティをバインドするためにサービスを使用したくありません。

私の問題が何であるかを理解し、誰かが私を助けてくれることを願っています.

4

3 に答える 3

1

物事を行う正しい方法は、アプリケーションの状態を保存することです。onSaveInstanceState(Bundle savedInstanceState)メソッドをオーバーライドして状態を保存し、onRestoreInstanceStateをオーバーライドして状態を取得します。

大量のデータセットを保存する必要がある場合は、SQLデータベースの使用を検討してください

于 2012-05-10T07:46:28.650 に答える
0

onPause()onResume()およびメソッドで、アプリが希望どおりに閉じて再起動することを確認する必要がありonStop()ます。アプリの状態を保存できるものを確認しsavedInstanceStateてください(パラメーターとして onCreate に送信されたときに復元できます)

于 2012-05-10T07:47:38.623 に答える