2016-04-12 9 views
0

Video Oynatıcım var, hangi videoyu oynatmaya çalışıyorum, ana düğmeyi tıklattığımda, bir bildirim görüntüleyeceğim ve bir kez VideoActivity örneğini ön tarafa getireceği bildirimi tıklıyorum. benim bildirim için Niyet nasıl tanımladığına buradaAna düğmeyi tıklattıktan sonra bir aktivite nasıl geri dönülür (bildirim yoluyla)

var:

Intent notificationIntent = new Intent(context, VideoActivity.class); 
     notificationIntent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 

ama her i bildirimi tıklayın, yeni bir VideoActivity oluşturulacak çıkıyor. Bu da (herhangi bir yan etkisi olmadan) daha şık bir şekilde aynı şeyi yapacağız olarak

+0

Muhtemel kopyası [Intent - etkinlik çalışıyorsa, önüne getirin, yeni bir tane (bildirimden) başlatın] (http://stackoverflow.com/questions/19039189/intent-if-activity-is- – GRiMe2D

+0

@ GRiMe2D no-run-it-to-front-else-start-a-yeni-one-from-n), bu bir kopyası değil. Bağlantılı soru, bir görev içindeki aktivitelerin yeniden düzenlenmesi ile ilgilidir. –

+0

Şuna bir bakın: http://stackoverflow.com/questions/5502427/resume-application-and-stack-from-notification –

cevap

1

bunu kullanın

final Intent notificationIntent = new Intent(context, YourActivity.class); 
    notificationIntent.setAction(Intent.ACTION_MAIN); 
    notificationIntent.setFlags(FLAG_ACTIVITY_NEW_TASK); 
    notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

veya

Eğer bu da

<activity 
    android:name=".YourActivity" 
    android:launchMode="singleTask"/> 

Açıklama kullanabilirsiniz tekTask

The system creates a new task and instantiates the activity at the root of the 
new task. However, if an instance of the activity already exists in a separate 
task, the system routes the intent to the existing instance through a call to 
its onNewIntent() method, rather than creating a new instance. Only one 
instance of the activity can exist at a time. 
+0

Hayır hayır! Bu sorunu çözmek için doğru yol bu değil! Bunun için herhangi bir özel başlatma moduna ihtiyacınız yoktur. özel fırlatma modlarını kullanmak her türlü diğer yan etkilere neden olur. Bu iyi bir öneri değil. –

+0

@DavidWasser: önereceğiniz en uygun cevap ne olacak? –

+0

Sadece bildirimdeki görev için bir "başlatıcı" niyetini sağlamanız yeterlidir. Bu, görevi arka plandan ön plana getirir. Http://stackoverflow.com/questions/5502427/resume-application-and-stack-from-notification –

0

Bunu denemelisiniz.

Intent notificationIntent = new Intent(context, VideoActivity.class);  
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP); 
+0

Bu da doğru bir yaklaşım değil. OP sadece görevini arka plandan ön plana getirmek istiyor. Bunu yapmanın başka yolları var. Sorudaki yorumlarımı ve bağlantılı soruları/cevaplarımı görün. –

0

Sen etkinlik tek görevi zaten çalışıyorsa veya arka plan halde tutup yeni örneği oluşturulur edilmemelidir ve zaten çalışıyor aktivite önüne getirilmesi gerekirken demektir yapmak zorunda. etkinlik girişinde launchMode = "singleTask"

: AndroidManifest.xml Bunun için

Eğer aktiviteyi ilan

android ekleyin.

+0

Hayır hayır! Bu sorunu çözmek için doğru yol bu değil! Bunun için herhangi bir özel başlatma moduna ihtiyacınız yoktur. özel fırlatma modlarını kullanmak her türlü diğer yan etkilere neden olur. Bu iyi bir öneri değil. –

İlgili konular