我在取消警报和启动的服务时遇到问题。无法停止使用alarmManager开始的服务
我设定闹钟的活动:
public class AlarmStarter extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent locationPollerIntent = new Intent(this, LocationPoller.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast
(getApplicationContext(), REQUEST_CODE, locationPollerIntent, 0);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(), 6000, pendingIntent);
}
}
的LocationPoller意图将启动服务来获得设备的位置。 因此,我使用alarmManager以特定频率重复搜索。
之后,当我在一个BroadcastReceiver上获取我的位置时,我打电话给另一个活动以显示位置并发出通知。
在这个时候,我想停止搜索的位置。 所以我尝试取消alarmManager。
public class Notifier extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_notifier);
findViewById(R.id.btTurnOffAlarm).
setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intentToStop = new Intent(this, LocationPoller.class);
PendingIntent pendingIntentToStop = PendingIntent.getBroadcast
(getApplicationContext(), REQUEST_CODE, intentToStop, 0);
AlarmManager alarmManager = (AlarmManager)
getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntentToStop);
}
});
}
}
但是,这不工作,它继续搜索的位置。
任何线索?
谢谢。
感谢您的回复。 我试过了,但没有奏效。 – blui
您是否在每次测试之前擦拭模拟器?也许您之前的警报仍在提取位置。并确保每个闹钟都使用唯一的ID。所以,如果你发出5次警报,你需要5个不同的ID ......只是猜测... –