根据这个问题需要后台服务。
我试图这样做,但我无法确定我应该在哪里调用服务内部的警报管理器。
我的服务
这是我试过的服务类。
public class MyService extends Service{
PendingIntent pendingIntent;
AlarmManager alarmManager;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Query the database and show alarm if it applies
// I don't want this service to stay in memory, so I stop it
// immediately after doing what I wanted it to do.
pendingIntent = PendingIntent.getBroadcast(
this.getApplicationContext(), 280192, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 11);
calendar.set(Calendar.MINUTE, 55);
calendar.set(Calendar.SECOND,00);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
// stopSelf();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
// // I want to restart this service again in one minute
// AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
// alarm.set(
// alarm.RTC_WAKEUP,
// System.currentTimeMillis() + (1000 * 60 * 1),
// PendingIntent.getService(this, 0, new Intent(this, MyService.class), 0)
// );
}
}
即使应用程序未运行,请指导我向用户发出特定时间段的提醒。谢谢你
您不需要为此用例创建自己的服务,您可以为此使用 Android 框架中的 Alarmservice,它可以启动应用程序(即使应用程序未运行)和时间设置,前提是手机处于开机状态。现在要设置闹钟,可以在任何视图(Activity/Fragment)中调用。您可以创建一个按钮并设置操作以根据需要设置闹钟。在调用警报时,您可以使用挂起的广播接收器进行任何后续操作。调用如下设置闹钟,你可以使用 Pending Broadcast 意图来做你的事情。相信我,即使您的应用程序没有运行,它也会工作。注意 - AlarmBroadCastReceiver 应该是清单接收器,即在清单文件中声明。
private void setAlarm(int type) {
// AlarmManager
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Alarm type
int alarmType = AlarmManager.RTC;
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
switch (type) {
case 1:
// Set Alarm for next 20 seconds
time.add(Calendar.SECOND, 20);
break;
case 2:
// Set Alarm for next 2 min
time.add(Calendar.MINUTE, 2);
break;
case 3:
// Set Alarm for next 30 mins
time.add(Calendar.MINUTE, 30);
break;
}
Intent broadcastIntent = new Intent(this, AlarmBroadCastReceiver.class);
broadcastIntent.putExtras(sourceIntent);
Random generator = new Random();
PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(this,
generator.nextInt(), broadcastIntent,
PendingIntent.FLAG_ONE_SHOT);
alarmManager.set(alarmType, time.getTimeInMillis(), pendingAlarmIntent);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句