2017-09-30 21 views
1

私が正しく理解した場合、START_STICKYSTART_NOT_STICKYの違いは、システムによって最初に再起動されることです。アプリケーションが終了した後にSTART_STICKYサービスが再起動される

Process.killProcess(Process.myPid())を使用してアプリケーションを終了すると、これも起こるかどうかは誰にも分かりますか?あるいは、サービスがアプリケーションプロセス内からではなく外部から実際に抹消された場合にのみ、システムはサービスを再起動しますか?

+0

それを試してみてください –

答えて

1

いつでも、サービスを継続して実行するにはSTART_STICKYに依存することはできません。バッター方法はstartForegroundを使用して継続的に実行するか、特定のタスクを繰り返し、特定の時間にサービスをスケジュールする場合です。また、電話機が再起動されたときにも管理します。

Notification.Builder builder = new Notification.Builder(getBaseContext()) 
        .setContentTitle(""); 
        .setContentText("Your content text"); 
startForeground(1, builder.build()); 
+0

両方の答えは実際には正しいと私を助けました、私は説明に加えてコードスニペットが含まれているので、これを決定しています。 – meow

1

はい、START_STICKYサービスは、アプリケーションがAndroidシステムによって強制終了された後に再起動されます。

アプリコンポーネントからstopService()メソッドを呼び出すか、サービス内からstopSelf()をコールするまで、サービスが強制終了されるとサービスが再開されます。

ただし、サービスのステータスバーに通知を表示する必要があるstartForeground()メソッドを使用して、サービスを実行させることができます。このメソッドを使用してサービスを作成すると、サービスはアクティブなアクティビティと同じ優先度で実行されます。つまり、サービスが停止する可能性は非常に低く、再起動は必要ありません。

+1

答えがありがたいですが、それは意味があります。私はすべてが完全に自動でなければならないビジネスアプリケーションに取り組んでいます。ユーザーの操作(要件の一部)はありません。だから、最終的な問題をキャッチするために、私は毎日アプリを再起動し、AlarmMonitorを使ってそれを再スケジュールします。私の場合、アプリが自分のスケジュールの外で再起動すると、実際には間違っています。しかし、startForegroundは、それをさらに安定させるための素晴らしいアイデアです。 – meow

関連する問題