如何从Android Notification正确启动活动堆栈?

时间:2015-02-14 17:18:02

标签: android android-intent android-fragments android-fragmentactivity

enter image description here

设置:

  • 我在MainActivity中放置了9个片段。
  • 有一个单独的后台服务,它一直处于活动状态,并且一直有效。 (播放音频)
  • 使用主页按钮关闭应用程序后,触摸通知会打开应用程序。
  • 在片段(音轨)中选择某个对象时,会加载一个新的活动(NowplayingActivity)

我需要什么:

  • 我想要一切都一样,除了我希望系统首先打开MainActivity,而不是触摸通知时的NowplayingActivity。

我尝试了什么:

  • *我无法使TaskStackBuilder正常工作。(也许不是这种东西)MainActivity永远不会显示(但是NowplayingActivity)即使我在manifest中定义了parentActivity文件。

    • 我尝试在Intent的附加内容中传递逻辑命令("创建时,打开NowplayingActivity")。这有效。但是,在MainActivity上的Fragments完全创建之前调用onNewIntent时,片段不会收到可见性更改的提示,也不会暂停...我可以在onNewIntent内部延迟启动另一个Activity ,但这很难看。

我可以尝试什么?我在这里缺少什么?

更新(为TaskStackBuilder方法添加了非工作代码) *

<activity
        android:name=".MainActivity"
        android:launchMode="singleInstance"
        android:label="MMM"
        android:parentActivityName=".MainActivity">
...
<meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity"/>

Intent resultIntent = new Intent(this, NowplayingActivity.class);          
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);  
stackBuilder.addParentStack(NowplayingActivity.class); 
stackBuilder.addNextIntent(resultIntent);

//PendingIntent resultPendingIntent = PendingIntent.getActivity( this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);

0 个答案:

没有答案