【发布时间】:2020-10-06 08:36:04
【问题描述】:
我正在开发一个间隔计时器,它会在每个间隔(例如 30 分钟)发出警报。 我想让计时器在后台或设备处于睡眠状态时工作并显示通知, 我被告知要使用 Intent Service,但它已被弃用。我应该用什么? -我想支持到 API 21
【问题讨论】:
标签: java android android-workmanager android-intentservice
我正在开发一个间隔计时器,它会在每个间隔(例如 30 分钟)发出警报。 我想让计时器在后台或设备处于睡眠状态时工作并显示通知, 我被告知要使用 Intent Service,但它已被弃用。我应该用什么? -我想支持到 API 21
【问题讨论】:
标签: java android android-workmanager android-intentservice
您需要创建一个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
}
}
记得注册到Manifest:
<receiver android:name="processTimer" >
<intent-filter>
<action android:name="processTimerReceiver" >
</action>
</intent-filter>
</receiver>
编辑:
如果您的应用使用互联网连接,您可以使用 Firebase 每 30 分钟发送一次通知
【讨论】: