2012-01-18 7 views
1

一定期間(10-15分)バックグラウンドに入れたときに、私のアプリが閉鎖しているという報告を受けています。これは事実ではなかった。これは、Androidが同時に実行されているアプリケーションの数を減らし、それによってデバイスの全体的なメモリ圧迫を減らすことについてより積極的であるかのようです。アイスクリームサンドイッチは、積極的にバックグラウンドでアプリを終了していますか?

これは全体的には良いことですが、私は苦情を受けていますが、これは標準的な動作ではなかったため、私のアプリが誤動作しているとお客様が信じています。

ICSが実際にもっと積極的にアプリケーションを終了しているかどうかを確認することはできますか?そうであれば、常に真実で常にglib以外のアプリが閉鎖される可能性を減らすための"少ないメモリを使う"?

ありがとうございます!

答えて

1

これは、デバイスによって大きく異なります。 「唯一の」384 MBのRAMをアプリに利用できるNexus Sのようなデバイスでは、ウィンドウやアプリは実際より攻撃的に殺されます。

2

バックグラウンドが10-15分の場合は、それが動作し続けることが重要な理由は何ですか? onPause()またはonDestroy()にアクティビティの状態を保存することはいつでも処理できます。次回ユーザーがアクティビティを開くときには単に状態を復元します(onResume())。それは長期的なバックグラウンドプロセスであれば、おそらくそれをサービスで実行するべきです。

+1

主な問題は、サービスに接続し、データをダウンロードして描画する起動シーケンスがあることだと思います。以前はonPauseだけが呼び出されていたので、リストアするのは非常に高速でした。さて、スタートアップシーケンスをもう一度進めなければなりません。私たちは状態をシリアル化してすぐに復元するために、たくさんのeng作業を行うことができます。OSが状態を凍結させてページを破棄して完全に破棄することができるのは簡単でしょう。これらの変更を考えれば、私たちのようなアプリケーションのための最適なデザインパターンは今何ですか? – esilver

+0

アイデアと同様に、最後にダウンロードしたデータのローカルコピーをキャッシュし、そのデータから復元し、スレッドを生成してバックグラウンドで最新のデータをダウンロードします。そうすれば、たとえそれが最新ではないとしても、ユーザーは少なくとも正確なデータをすぐに見ることができます。 – kcoppock

+0

この動作は、あなたが制御できないアプリにも影響します。再起動後に状態を完全に復元するのに苦労したアプリはほとんどありません。 (私が別のアプリに1分間の間に切り替えただけなので、ウェブページやオンラインバンキングにログインし続けることは大きな苦痛です。) – Michael

関連する問題