我在取消警報和啓動的服務時遇到問題。無法停止使用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 ......只是猜測... –