私の小さなアンドロイドの知識から、アンドロイドOSが極端なメモリ条件下で私のサービスを殺す可能性があることを理解しています。
を返すサービスを作成しましたSTART_STICKY
。このサービスは、バックグラウンドで実行することを目的としています。
アンドロイドが私のサービスを殺そうとしている場合、それは呼び出されonDestroy
ますか?
そして、再起動すると、それは呼び出されonCreate
ますか?
私の小さなアンドロイドの知識から、アンドロイドOSが極端なメモリ条件下で私のサービスを殺す可能性があることを理解しています。
を返すサービスを作成しましたSTART_STICKY
。このサービスは、バックグラウンドで実行することを目的としています。
アンドロイドが私のサービスを殺そうとしている場合、それは呼び出されonDestroy
ますか?
そして、再起動すると、それは呼び出されonCreate
ますか?
こちらの開発ガイドをご覧ください。http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle
onCreate()
プロセスの開始時にのみ呼び出されます。これは、サービスが初めて実行されたときか、再起動時に強制終了された場合のいずれかです。基本的に、これは開始するたびに呼び出されます。
onStartCommand()
は、クライアントが を呼び出すたびに呼び出されますstartService()
。
サービスが破棄されたり完全に停止したりすると、Android はonDestroy()
そのサービスを呼び出すことになっています。それが起こらない可能性があると思います(たとえば、Androidシステムを介さずにプロセスが強制終了されます)。バインドされたサービスの場合、これは、アクティブなクライアント バインダーがそれ以上ない場合です。
編集:onCreate()
サービスが開始されます。onStartCommand()
誰かがサービスを利用します。onDestroy()
サービスが強制終了/停止されました。
誰かが Context.startService() を呼び出すと、システムはサービスを取得し (サービスを作成し、必要に応じて onCreate() メソッドを呼び出します)、クライアントから提供された引数を使用して onStartCommand(Intent, int, int) メソッドを呼び出します。
...
サービスは、開始することも、接続をバインドすることもできます。このような場合、サービスが開始されているか、Context.BIND_AUTO_CREATE フラグを使用してサービスへの接続が 1 つ以上ある限り、システムはサービスを実行し続けます。これらの状況がいずれも成立しない場合、サービスの onDestroy() メソッドが呼び出され、サービスは事実上終了します。すべてのクリーンアップ (スレッドの停止、レシーバーの登録解除) は、onDestroy() から戻るときに完了する必要があります。
http://developer.android.com/reference/android/app/Service.html
編集:クイックアンサー。はい、両方の質問に