【发布时间】:2011-11-28 04:10:01
【问题描述】:
我在取消警报和使用它启动的服务时遇到问题。
我在一个活动中设置了闹钟:
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 Intent 将启动一个服务来获取设备的位置。 所以我使用alarmManager以一定的频率重复这个搜索。
之后,当我在 BroadcastReceiver 上获取我的位置时,我会调用另一个 Activity 来显示位置并发出通知。
此时,我想停止搜索该位置。 所以我尝试取消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);
}
});
}
}
但这不起作用,它会继续搜索位置。
有什么线索吗?
谢谢。
【问题讨论】:
标签: android service location alarmmanager