8

Niyet Bayrakları ile bazı yanlış anlamalar yaşadığımı tahmin ediyorum. Yapmaya çalıştığım şey, bir radyo alıyorum. iki Etkinliği olan (PlayerApplication ve SettingsScreen) akış uygulamaları. Ben de bir Bildirim tutan arka planda çalışan Akış için bir Service.class var (bildirim-overlay menü ve PlayerApplication içinde oynatma/durdurma başlatabilirsiniz). Kullanıcı Bildirime tıklarsa, PlayerApplicationActivity ekrana geri dönmelidir.Android: Notification'dan PendingIntent, Etkinlik'i Ekranda geri getiriyorsa onCreate() öğesini tetiklemiyorsa,

Her şey çalışıyor, davayı bekliyoruz: Kullanıcı SettingsScreenActivity açar -> NotificationOverlayMenu açar -> Bildirim at tıklar -> PendingIntent PlayerApplicationScreen orada, Şimdi

PlayerApplicationActivity

üzere devam eder, ama bir şey tıklayamazsınız. Görüyorum ki, Bildirim Uygulamasından devam edersem PlayerApplication'ımın onCreate() öğesi tetiklenmez. İnce (aynı zamanda şişirilmiş onCreate()) Ama düzen görünüyor ben Service.class içinde PendingIntent aşağıdaki kullanılan

: (zaten çalışıyor ise)

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

Yani aslında PendingIntent Aktivite getirmelidir geri üst. Yanlış Amaç mı kullanıyorum yoksa bir noktayı mı özlüyorum? Aradığınız aktivitenin örneği zaten çalışıyorsa, SingleTask:

DÜZENLEME: ve ben FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_SINGLE_TOP içinde ve fırlatma modunda, android geliştirici site göre Manifest.xml

android:launchMode="singleTask" 
+1

'android <application-node> yılında launchMode ilan değildir: launchMode = "singleTask"' senin 'Activity' için ve Zaten çalışıyor, 'onCreate' –

cevap

1

Sadece yanlış ne yaptığını anladım: Benim amaçla

  1. Yanlış launchMode kullandı. Sağ biri singleTop

  2. singleTask yerine <activity-node>

    //Manifest.xml 
    <activity 
        android:name="..." 
        android:launchMode="singleTop" > 
    
    beyan ettiğiniz yana
6

yılında launchMode ilan sonra yeni örnek oluşturmak yerine, onNewIntent() yöntemini çağırır. Bu yüzden, onCreate() çağrısı olmadığında, etkinliğinizin çalıştığı bu koşulu kontrol etmelisiniz.

+0

OMG yerine' onNewIntent 'geri dönüşü alacaksınız! Bütün araştırmalarım nihayetinde bir sonuca yol açıyor! Teşekkür ederim! Beni dinle ... sadeceNewIntent() 'i geçersiz kıl ve onCreate metodunda yaptığın şeyi yap! –

+0

Uzun Canlı Adam Günümü kurtardı, bunu paylaştığın için çok teşekkürler. –