8

domyślam się, że mam pewne nieporozumienia z flagami intencji. Próbuję tylko, że mam radio aplikacje strumieniowe, które mają dwie czynności (PlayerApplication i SettingsScreen). Mam usługę Service.class do przesyłania strumieniowego, która działa w tle, która również posiada powiadomienie (możesz zatrzymać/rozpocząć odtwarzanie w menu z nakładką powiadomień i aplikacji PlayerApplication). Jeśli użytkownik kliknie Powiadomienie, PlayerApplicationActivity powróci do ekranu.Android: PendingIntent z powiadomienia nie uruchamia funkcji onCreate(), jeśli przywraca działanie na ekranie

Wszystko działa poprawnie, należy oczekiwać sprawę Użytkownik otwiera SettingsScreenActivity -> otwiera NotificationOverlayMenu -> kliknie na powiadamianiu -> PendingIntent wznawia się PlayerApplicationActivity

Teraz PlayerApplicationScreen tam jest, ale nie mogę nic kliknąć. Widzę, że onCreate() mojego PlayerApplication nie zostanie wyzwolony, jeśli wznowię działanie z Notification. Ale układ wygląda dobrze (także zawyżona w onCreate())

użyłem następujących PendingIntent w Service.class:

PendingIntent contentIntent = PendingIntent.getActivity(
     this.getApplicationContext(), //Service.class 
     0, 
     new Intent(this,PlayerApplicationActivity.class) 
      .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_SINGLE_TOP), 
     0); 

Więc rzeczywiście PendingIntent powinien przynieść Aktywny (jeśli jest już uruchomiony) z powrotem do szczyt. Czy używam złych intencji, czy też brakuje mi punktu?

EDIT: i oświadczyłem launchMode w manifest.xml

android:launchMode="singleTask" 
+1

Ponieważ zadeklarowały: launchMode = "singleTask"' 'do Activity' i już działa otrzymasz wywołanie zwrotne 'onNewIntent' zamiast' onCreate' –

Odpowiedz

1

prostu zorientowali się, co robię źle:

  1. Dla mojego celu użyłem złego launchMode. Słuszna jest singleTop nie singleTask

  2. I ogłosił launchMode w <application-node> zamiast `android <activity-node>

    //Manifest.xml 
    <activity 
        android:name="..." 
        android:launchMode="singleTop" > 
    
6

Według android dewelopera site, W FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_SINGLE_TOP iw trybie wprowadzenia: SingleTask, Jeśli wystąpienie aktywności, do której dzwonisz jest już uruchomiony następnie zamiast tworzenia nowej instancji wywołuje metodę onNewIntent(). Myślę więc, że powinieneś sprawdzić ten warunek, że twoja aktywność jest uruchomiona, gdy onCreate() nie dzwoni.

+0

OMG! Wszystkie moje badania ostatecznie doprowadziły do ​​czegoś !! Dziękuję Ci! Posłuchaj mnie ... po prostu przesuń naNewIntent() i rób to, co zrobiłeś na MetodaCreate !!!!!!! –

+0

Long Live Man uratowałeś mój dzień, dziękuję za opublikowanie tego. –

Powiązane problemy