アプリを開いたとき、またはデバイスを起動したときに、特定の「長い」プロセスを実行するアプリがあります。
このプロセスは、ダウンロード マネージャーを介して一定量のダウンロードを実行し、プロセスが終了すると、ブロードキャスト イベントをアプリに送信して、分析をキャプチャします。
私が理解しているように、ブートブロードキャストイベントが呼び出されるたびに、Application
クラスがインスタンス化されます (まだメモリにない場合)。
Application
クラスは、ユーザーがアプリを開いたときにも開始されます。
それに基づいて、プロセスを実行するコードをクラスonCreate
のメソッド内に配置します。Application
(プロセスはそこから新しいスレッドを開始します)
ただし、「長い」プロセスは、ブート ブロードキャスト レシーバーの存続時間 (約 10 秒?) よりも長くかかっているように見えるため、アプリ プロセスは強制終了されます。それから数秒後、ダウンロードが完了した後、2 番目のブロードキャストが送信され、アプリが再び開始さApplication.onCreate
れ、いくつかの望ましくない影響が生じます。
プロセスは、単一の直線的な方法で実行され、再度呼び出されることはないと予想されていましたonCreate
。
このプロセスは 1 回しか発生しないService
ため、アプリが存続するためにより多くの時間を与えるために を作成することを考えていました。ただし、プロセスは DownloadManager に依存するため、次のようになります。
1)リターンIntentService
後にプロセスがまだ強制終了されているため、使用は機能しません(私が理解しているように) 。handleIntent
プロセスは新しいスレッドを作成するため、そのタスクは非同期になり、handleIntent
プロセス全体が終了する前にメソッドが戻ります。
2)Service
しばらくの間単に「生きている」だけで、プロセスが終了した後に停止する を作成する必要がありますか?
3) 追加の質問として、実行中の がある場合Service
、Application
クラスはインスタンス化され、サービスが停止するまでメモリに保持されますか?