알람을 취소하고 서비스를 시작하는 데 문제가 있습니다.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가 필요합니다 ... 그냥 추측하면 ... –