0

リモート サーバーまたは独自のキャッシュ ディレクトリからオーディオ ファイルとビデオ ファイルを再生するアプリケーションがあります。「ホーム」または「戻る」ボタンでアプリケーションを最小化すると、状態が onStop() に変わります。次に、アイドル状態 (20 ~ 50 分程度) の後、Activity Manager は「不要」というメッセージをアクティビティに送信し、アクティビティを閉じます。

この場合のアクティビティ ライフサイクルによると、アプリケーションは onCreate (図の onStop() から左側の分岐) にジャンプします。アクティビティの表現が正しくない場合、トラック リストを含むフラグメントが既存のフラグメントの上に読み込まれ始め、UI が使用できなくなります。この状況を修正する唯一の方法は、アプリケーションを完全に再起動することです。

問題を解決するには2つの方法があると思います:

1)システムがアプリケーションを強制終了しないようにします(このアプローチは Android の通常のアプリケーション ライフサイクルに違反し、バッテリーの放電を加速するため、正しくない可能性があります)。

2) OS がアプリケーションを強制終了し、リソースをクリーンアップして、OS が新しいアクティビティを適切に作成できるようにする状況を検出します。

2 番目のバリアントが望ましいと思います。

それを実装する方法についていくつかのアイデアはありますか?Android が私のアプリケーションを強制終了し、このアクションに反応しようとしていることを検出することは可能ですか?

前もって感謝します!

4

1 に答える 1

1
  1. アプリがアイドル状態で何もしないサービスを作成した場合、それは余分なバッテリーを消費せず、プロセスを固定します (主張をより強くするために通知も行う必要があります)。しかし、何をしても、リソースが不足すると、システムがアプリを破棄する可能性があります。受け取ることが保証されている唯一のコールバックはonPause()であり、完了までに時間がかかりすぎると、システムは非常に混乱することに注意してください。システムが絶望的な場合、onStop() やファイナライザーなど、他のすべての呼び出しはスキップされる可能性があります。

  2. したがって、2 番目の戦略 (Simon のコメントが実際に意味するもの) に従い、正しく処理する必要があります。onStart()onRestart()

于 2013-06-27T08:14:21.353 に答える