Службы Android: START_STICKY не работает на Kitkat
Я использую службы в приложении для прослушивания того, сколько раз пользователь нажимает кнопку питания. Реализация работала нормально на всех устройствах. Но когда я тестировал приложение на Android Kitkat, я заметил что-то не так.
Как только я отмахиваюсь от приложения недавно, приложение перестает прислушиваться к кнопке питания.
Вот код, с которым я работаю:
public class Receiver extends Service {
Notification notification;
private static final int NOTIFICATION_ID = 0;
NotificationManager manager;
PendingIntent toOpen;
Intent intent;
private BroadcastReceiver POWER_BUTTON = new Powerbuttonrecceiver();
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(POWER_BUTTON, filter);
startNotify();
return START_STICKY;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
unregisterReceiver(POWER_BUTTON);
dismissNotification();
super.onDestroy();
}
public void startNotify(){
manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.ic_launcher_drop;
CharSequence tickerText = "Service activated";
CharSequence tickerContent = "Service is now on. You can press your power button and the app will listen to it. Tap to turn this feature off";
intent = new Intent(Receiver.this, Options.class);
toOpen = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
notification = new NotificationCompat.Builder(getApplicationContext())
.setContentTitle(tickerText)
.setContentText(tickerContent)
.setSmallIcon(icon)
.setOngoing(true)
.setContentIntent(toOpen)
.build();
manager.notify(NOTIFICATION_ID, notification);
}
public void dismissNotification(){
manager.cancel(NOTIFICATION_ID);
}
}
Как можно заметить, я использую уведомление, чтобы показать, что служба активна. Что меня смущает, так это то, что после пролистывания из приложения Recents уведомление все еще остается, что является неактивнымBroadcastReceiver
? или это ложно.
В приложенииonDestroy
Я не вызывал никаких функций для регистрации или отмены регистрации, а также для остановки службы. Еще раз, эта проблема видна только в Android KitKat. Пожалуйста, если вы, ребята, знаете, что происходит. Помогу :)
ОБНОВИТЬЯ также заметил сPlay Music
на Kitkat, когда я смахиваю его с приложения последней версии, музыка останавливается. Это ошибка на Киткат? Но сервисы звука / медиаплеера наSoundCloud
работает, даже когда сильно ударил из приложения последние.
ОБНОВИТЬ: Зарегистрирован какВыпуск 63618 на андроиде выдают трекер. Прочитайте комментарии к проблеме для более подробной информации.