如何使用 AlarmManager 停止服务
How to stop service using AlarmManager
我有一个警报管理器,每分钟重复运行一项服务。我想使用按钮停止警报管理器。
闹钟管理器在我进入应用程序时停止,但当它从应用程序中出来并且我想再次停止时钟时,它不会停止,因为内存中没有待处理的意图。使用新的 pending intent,之前的 pending intent 不会停止,即使我使用相同的 id。
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(G.context, MyService.class);
intent.setAction("1020");
pendingIntent = PendingIntent.getService(G.context, 1020, intent, 0);
G.alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2000, pendingIntent);
}
});//for start button alarm manager
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(G.context, MyService.class);
intent.setAction("1020");
PendingIntent alarmIntent = PendingIntent.getBroadcast(G.context, 1020, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmIntent.cancel();
G.alarmManager.cancel(alarmIntent);
}
});//for stop button alarm manager
您可以使 pendingIntent
全局化并像在
中那样对 set/stop
使用相同的方法
Intent intent = new Intent(G.context, MyService.class);
intent.setAction("1020");
pendingIntent = PendingIntent.getService(G.context, 1020, intent, 0);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
G.alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2000, pendingIntent);
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pendingIntent.cancel();
G.alarmManager.cancel(pendingIntent);
}
});
我有一个警报管理器,每分钟重复运行一项服务。我想使用按钮停止警报管理器。
闹钟管理器在我进入应用程序时停止,但当它从应用程序中出来并且我想再次停止时钟时,它不会停止,因为内存中没有待处理的意图。使用新的 pending intent,之前的 pending intent 不会停止,即使我使用相同的 id。
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(G.context, MyService.class);
intent.setAction("1020");
pendingIntent = PendingIntent.getService(G.context, 1020, intent, 0);
G.alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2000, pendingIntent);
}
});//for start button alarm manager
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(G.context, MyService.class);
intent.setAction("1020");
PendingIntent alarmIntent = PendingIntent.getBroadcast(G.context, 1020, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmIntent.cancel();
G.alarmManager.cancel(alarmIntent);
}
});//for stop button alarm manager
您可以使 pendingIntent
全局化并像在
set/stop
使用相同的方法
Intent intent = new Intent(G.context, MyService.class);
intent.setAction("1020");
pendingIntent = PendingIntent.getService(G.context, 1020, intent, 0);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
G.alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 2000, pendingIntent);
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pendingIntent.cancel();
G.alarmManager.cancel(pendingIntent);
}
});