我希望以与用户在启动器中点按其图标时完全相同的方式从状态栏通知中恢复我的应用.
那就是:我希望堆栈处于与用户离开之前相同的状态.
在通知上设置待处理意图时的问题是它始终以特定活动为目标.我不想要这个.我需要像启动器那样恢复应用程序.
因此,如果用户处于活动A中,我想恢复活动A.如果他已从活动A启动活动B,那么我希望在用户点击通知时显示B,并且要恢复堆栈以便A获得用户点击B中的后退按钮时恢复
还有其他几个问题与类似的标题,但没有一个解决我的问题.
我想创建一个通知,单击它时会将我的应用程序放在前面,但不会更改(重新加载或导航)显示的最后一个活动.
我试过了:
setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT))
Run Code Online (Sandbox Code Playgroud)
但是在新的Android 4.3中将应用程序带到了前面,但它也开始了新的实例MainActivity,而我不希望这样.
我希望我的应用程序将从显示的上一个活动继续.
怎么做?
我在MainActivity中有六个选项卡,第二个选项卡有一个listview,当用户按下listview项时,它打开一个新的Activity with Action栏,所以,当用户按下第二个活动的后退按钮时,我想去主活动的上一个选项卡(第二个选项卡),但它加载了第一个选项卡(主页选项卡).
我怎么解决这个问题?
我将launchMode设置为singleTask的活动:
<activity
android:name="com.blah.blah.MyActivity"
android:launchMode="singleTask">
</activity>
Run Code Online (Sandbox Code Playgroud)
我有一个PendingIntent持续通知,启动该活动:
Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent = stackBuilder.getPendingIntent( REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );
...
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
m_notificationBuilder.build() );
Run Code Online (Sandbox Code Playgroud)
当我与现有的MyActivity交互时,我点击Home并通过启动器重新启动MyActivity,MyActivity onNewIntent()会按预期调用.
问题是当我与现有的MyActivity交互时,我点击正在进行的通知时,会创建一个新的MyActivity onCreate(),现有的MyActivity将被销毁onDestroy().我预计onNewIntent()会调用MyActivity .为什么不这样呢?
我试过这些答案没有成功: