Я использую службы в приложении для прослушивания того, сколько раз пользователь нажимает свою кнопку питания. Реализация отлично работала на всех устройствах. Но когда я тестировал приложение на Android Kitkat, я заметил что-то не так.
Как только я удаляю приложение из приложений recents, приложение больше не слушает кнопку питания.
Вот код, с которым я работаю:
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, когда я удаляю его из приложения recents, музыка останавливается. Это ошибка в Kitkat? Но службы sound/mediaplayer на SoundCloud
работают даже тогда, когда они удалены от приложения recents.
UPDATE: Записан, как Проблема 63618 в трее. Подробнее читайте в комментариях к проблеме.