在我的应用程序中,我想使用Alarm Manager在特定时间停止服务。但是Alarm Manager cancel()方法不需要任何时间。那我该怎么办呢?
我写了如下代码:
Intent intent = new Intent(DashboardScreen.this, ServiceClass.class);
Log.d("Testing", "Intent created");
PendingIntent pi = PendingIntent.getService(DashboardScreen.this, req, intent, 0);
AlarmManager alarm_manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm_manager.setRepeating(AlarmManager.RTC_WAKEUP, cur_cal.getTimeInMillis(),30*1000, pi);
Log.d("Testing", "Intent created");
Intent intent1 = new Intent(this, ServiceClass.class);
PendingIntent sender = PendingIntent.getService(this, req, intent1, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);
答案 0 :(得分:2)
在我看来,你无法直接使用alarmmanager停止服务。 alarmmanager中的cancel()函数只是删除预定的重复警报。
我建议您在需要时使用其他警报管理器调用停止服务的活动:
alarmmanager.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis的()+ TIME_PERIOD,的PendingIntent);
如果要在600秒后停止服务,可以将TIME_PERIOD设置为600 * 1000。 pendingIntent用于停止服务的活动。