2012-05-20 18 views
14

私の小さなアンドロイドの知識から、私はアンドロイドOSが極端なメモリ条件下で私のサービスを殺す可能性があることを理解します。アンドロイドが再起動すると、サービスは再び呼び出されますか?

START_STICKYを返すサービスを作成しました。このサービスはバックグラウンドで実行されます。

アンドロイドがサービスを停止しようとしている場合は、onDestroyに電話しますか?

それが再起動すると、onCreateが呼び出されますか?

+0

http://developer.android.com/reference/android/app/Service.html - これはライフサイクルについて語っています – user1378730

+0

Nice question Ahmed ...私は同じ混乱に苦しんでいます。あなたはonCreate() Androidがサービスを再起動したときに呼び出されますか? –

+1

@PankajKumarはい再起動すると呼び出されます – Ahmed

答えて

12

ここをクリックして、開発者ガイドを参照してください。 http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle

onCreate()は、プロセスが開始されたときにのみ呼び出されます。サービスが初めて実行されたとき、または再起動時に強制終了されたときにのみ呼び出されます。

onStartCommand()は、クライアントがstartService()を呼び出すたびに呼び出されます。

サービスが破損または完全に停止した場合、AndroidはそのサービスでonDestroy()と呼ぶことになっています。そのようなことは起こらない可能性があります(Androidシステムではなくプロセスが殺されるなど)。バインドされたサービスの場合、アクティブなクライアントバインダがそれ以上存在しない場合です。

編集:onCreate()サービス開始; onStartCommand()誰かがサービスを使用しています。 onDestroy()サービスは強制終了/停止されます。

4

誰かがContext.startService()を呼び出した場合、システムは サービス(それを作成し、必要に応じてそののonCreate()メソッドを呼び出す) を取得し、その後でそのonStartCommand(テント、int型、int)メソッドを呼び出しますクライアント

によって供給 引数...

は、サービスの両方が開始され、それに結合された接続を持つことができます。 このような場合、システムは、 が起動されているか、または1つまたは複数の接続が Context.BIND_AUTO_CREATEフラグである限り、サービスの実行を継続します。これらのいずれの状況もなくなると、サービスのonDestroy()メソッドが呼び出され、サービスは が有効に終了します。すべてのクリーンアップ(スレッドの停止、 レシーバの登録解除)は、onDestroy()からの復帰時に完了する必要があります。

http://developer.android.com/reference/android/app/Service.html

EDIT:クイック答え。両方の質問にはいる

関連する問題