web-dev-qa-db-ja.com

Android-アプリケーションが実行されていない場合でも、15分ごとにバックグラウンドタスクを実行します

アプリケーションが実行されていない場合でも、10/15分ごとに実行されるバックグラウンドタスクを構築する必要があります(実際にはどちらでもかまいません)。

どうすればこれを達成できますか?私はこれに頭を抱えているようには見えません。

私は、ある種のrunnable()機能を使用したり、バックグラウンドサービスやAlarmManagerを使用したりできることを読みました。アプリケーション自体が実行されていないときにも行う必要があるため、バックグラウンドサービスを考えていました。

これを行うためのより良い方法は何ですか?それをどのように行うことができますか?

19
DijkeMark

コードのスニペットを実行する時間(間隔)を決定しました。エネルギー効率が高いため、 AlarmManager を使用する方が適切です。アプリが何らかのイベントをリッスンする必要がある場合は、サービスが必要です。

public static void registerAlarm(Context context) {
    Intent i = new Intent(context, YOURBROADCASTRECIEVER.class);

    PendingIntent sender = PendingIntent.getBroadcast(context,REQUEST_CODE, i, 0);

    // We want the alarm to go off 3 seconds from now.
    long firstTime = SystemClock.elapsedRealtime();
    firstTime += 3 * 1000;//start 3 seconds after first register.

    // Schedule the alarm!
    AlarmManager am = (AlarmManager) context
            .getSystemService(ALARM_SERVICE);
    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
            600000, sender);//10min interval

}
23
wtsang02

アラームマネージャー(システムサービス)とリモートサービスの内部アラーム実装(別のプロセス)

アラームマネージャーはあなたの選択です、それはあなたがすでに必要なものを持っているので、あなたはアラーム間隔を設定する必要があるだけです

2
pvllnspk

SyncAdapterを使用してこれを実現することもできます。ここに、見たり刺激を受けたりするためのサンプルがあります。

SyncAdapterサンプル

1
Benoit

最良のアプローチはGoogle I/O 2018- WorkManager で導入されました。

ドキュメント ここ を見つけることができます。

0
mtwain