Я все еще работаю над своим программным обеспечением Android для Android. У меня есть класс AlarmService, который запускает уведомления и уведомления о близости. Я начинаю эту услугу с:Как остановить несколько экземпляров службы Android?
startService(intentAlarmService);
Я пытаюсь остановить службу с помощью:
Intent intentAlarmService = new Intent(this, AlarmService.class);
stopService(intentAlarmService);
Это то, что происходит: Служба останавливается, но потом, когда я начинаю еще один экземпляр службы (т.е. выйти из приложения, запустить приложение, запустить службу). Я обнаруживаю (через Toasts), что предыдущие экземпляры службы все еще запущены. Например, в классе AlarmService существует LocationListener с методом onLocationChanged. Таким образом, в этом методе, я ставлю:
Toast.makeText(AlarmService.this, "AlarmTitle: " + mAlarmTitle, Toast.LENGTH_SHORT).show();
И когда я вновь запустить службу, Тосты продолжают появляться с предыдущим AlarmTitles, и током AlarmTitle.
Итак, что-то не работает, когда я пытаюсь остановить AlarmService - что это может быть?
Примечание: при повторной установке приложения служба прекращает свое существование. Затем, когда я запускаю службу, только ток AlarmTitle отображается в Toast (я хочу, чтобы это происходило каждый раз).
С моим сервисом что-то не так. Любые идеи, что я могу сделать?
спасибо.
КОД ОТ МОЕГО APP:
public void onDestroy() {
super.onDestroy();
Intent alarmIntent = new Intent(getApplicationContext(), AlarmReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntentAlarm.cancel();
Intent intentAlarmService = new Intent(getApplicationContext(), AlarmService.class);
stopService(intentAlarmService);
mNtf.cancel(NOTIFICATION_ID1);
mNtf.cancelAll();
}
Я еще немного новой для программирования Android. Я знаю, какие утечки памяти, но что подразумевается под «утечкой услуг»? Можете ли вы предложить еще несколько объяснений с точки зрения того, что кажется неправильным с моим приложением? Спасибо, и я сожалею о появлениях getApplicationContext(). –
@ Ясир Маланг: Я считаю, что вы вызываете 'registerLocationUpdates()' и не вызываете 'removeUpdates()'. – CommonsWare
Благодарим вас за помощь. Я просмотрел свой код, и я нашел 3 отдельных реализации класса LocationListener. Я сделал это, потому что я не знаю, как получить доступ к 1 публичному классу из другого класса. Как бы вы написали код, чтобы сделать 1 общедоступный класс LocationListener, а затем наследовать другие классы? –