Usługi Android: START_STICKY nie działa w Kitkat

Korzystam z usług w aplikacji, aby słuchać, ile razy użytkownik naciska przycisk zasilania. Implementacja działała dobrze na wszystkich urządzeniach. Ale kiedy testowałem aplikację na Android Kitkat, zauważyłem coś złego.

Gdy tylko odsuję aplikację od aplikacji końcowych, aplikacja nie będzie już nasłuchiwać przycisku zasilania.

Oto kod, z którym pracuję:

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);
    }

}

Jak można zauważyć, używam powiadomienia, aby zaznaczyć, że usługa jest aktywna. To, co mnie myli, to to, że po przeciągnięciu z ostatniej aplikacji powiadomienie nadal pozostaje, a nieaktywne jest powiadomienieBroadcastReceiver? lub jest to fałszywe.

W aplikacjionDestroy Nie wywołałem żadnych funkcji, aby zarejestrować lub wyrejestrować, a także zatrzymać usługę. Po raz kolejny ten problem jest widoczny tylko w Android KitKat. Proszę, jeśli wiecie, co się dzieje. Pomóż :)

AKTUALIZACJA: Zauważyłem też, żePlay Music na Kitkat, kiedy odsuwam go od aplikacji, muzyka zatrzymuje się. Czy to błąd w Kitkat? Ale usługi dźwięku / mediaplayer są włączoneSoundCloud działa nawet po odsunięciu od ostatniej aplikacji.

AKTUALIZACJA: Zalogowany jakoWydanie 63618 na trackerze problemów z Androidem. Przeczytaj komentarze do wydania, aby uzyskać więcej szczegółów.

questionAnswers(5)

yourAnswerToTheQuestion