サーバーに連絡して、アプリから定期的にデータ転送を行うサービスがあります。その正常に動作します。
しかし、私が再起動したとき(電源を入れ直したとき)、そのサービスは再起動できません。私の考えは、ユーザーが電話を再起動した後にアプリを開いたときに、そのサービスを再度開始することです。そのためには、サービスが実行されているかどうかを知る必要がありますか? どうやってするの?
このシナリオを処理する他のアイデアも感謝します。
前もって感謝します。
サーバーに連絡して、アプリから定期的にデータ転送を行うサービスがあります。その正常に動作します。
しかし、私が再起動したとき(電源を入れ直したとき)、そのサービスは再起動できません。私の考えは、ユーザーが電話を再起動した後にアプリを開いたときに、そのサービスを再度開始することです。そのためには、サービスが実行されているかどうかを知る必要がありますか? どうやってするの?
このシナリオを処理する他のアイデアも感謝します。
前もって感謝します。
アクションBroadcastReceiver
を意図した の実装が必要です。BOOT_COMPLETED
このような:
public class OnStartReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// your starting service code here
}
}
また、次のように、 = OnStartReceiver の完全修飾名とインテント フィルター タグをインテント名としてネストしたreceiver
マニフェスト ファイルにタグを追加する必要があります。android:name
BOOT_COMPLETED
<receiver android:name=".onStartReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
BroadcastReceiver
イベントをリッスンするを作成しますACTION_BOOT_COMPLETED
。詳細はこちら。
AlarmManager
このようなスケジュールされたタスクに使用すると、サービスが常にメモリ内にある必要がなくなります。Ribery 氏が指摘しているように、電話の再起動後にBroadcastReceiver
withを使用しACTION_BOOT_COMPLETED
てタスクを再スケジュールします。