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