如何在Android中的特定时间使用Alarm Manager停止服务?

时间:2011-11-30 07:23:13

标签: android

在我的应用程序中,我想使用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);

1 个答案:

答案 0 :(得分:2)

在我看来,你无法直接使用alarmmanager停止服务。 alarmmanager中的cancel()函数只是删除预定的重复警报。

我建议您在需要时使用其他警报管理器调用停止服务的活动:

alarmmanager.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis的()+ TIME_PERIOD,的PendingIntent);

如果要在600秒后停止服务,可以将TIME_PERIOD设置为600 * 1000。 pendingIntent用于停止服务的活动。