インターバル(例:30分)ごとにアラームを鳴らすインターバルタイマーに取り組んでいます。タイマーをバックグラウンドで動作させたい、またはデバイスがスリープ状態で通知を表示したいのですが、インテントサービスを使用するように言われましたが、非推奨です。何を使うべきですか?-API21までサポートしたい
を作成する必要がありますBroadcastReceiver
。たとえば、AlarmManagerを使用します。
int repeatTime = 30; //Repeat alarm time in seconds
AlarmManager processTimer = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, processTimerReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
//Repeat alarm every second
processTimer.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(),repeatTime*1000, pendingIntent);
そして、processTimerRecieverクラスを作成します。
//This is called every second (depends on repeatTime)
public class processTimerReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//Do something every 30 seconds
}
}
マニフェストに登録することを忘れないでください:
<receiver android:name="processTimer" >
<intent-filter>
<action android:name="processTimerReceiver" >
</action>
</intent-filter>
</receiver>
編集:
アプリがインターネット接続を使用している場合は、Firebaseを使用して30分ごとに通知を送信できます
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加