通知开启活动B后回归主线

Posted

技术标签:

【中文标题】通知开启活动B后回归主线【英文标题】:Return to main actuality after open activity B from notification 【发布时间】:2018-02-08 06:46:18 【问题描述】:

代码从 BroadcastReceiver 创建通知

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(G.context)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(G.context.getString(R.string.app_name))
                .setContentText("text")
                .setAutoCancel(true)
                .setColor(Color.MAGENTA);

        Intent intent = new Intent(G.context, B.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

        TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(G.context);
        taskStackBuilder.addParentStack(MainActivity.class);
        taskStackBuilder.addNextIntent(intent);
        PendingIntent resultPendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager = (NotificationManager) G.context.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(2, mBuilder.build());

【问题讨论】:

【参考方案1】:

如果您目前在MainActivity.java,然后单击通知并转到B Activity,只需在您的后按控制onClick() 方法中调用this.finish()onBackPressed()。如果您通过单击一个通知从任何地方打开您的B Activity,然后在您的B activity 中调用以下方法。

@Override
public void onBackPressed() 
   Intent i = new Intent(this, MainActivity.class);
   i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(i);

你可以这样做的其他方式

你不需要做任何事情。默认情况下,当您从 Activity A 移动到 Activity B 时,android 会将 Activity A 添加到 backstack。当你从Activity B按下返回按钮或完成它时,它会自动从backstack中恢复Activity A。

如果您希望完成您的 Activity B,请在需要时以编程方式调用 Activity 的 finish() 方法。

更多详情Check this

【讨论】:

谢谢 用这种方法,当我从app打开B活动并放回键按钮时,新创建的活动主要是不对的。我认为 也可以通过调用简单的onBackPressed() 方法或this.finish() 来实现,但如果没有任何先前的活动堆栈可用,则应用程序将被关闭 我们调用B活动程序时不应该出现这种情况,也就是你不应该从主活动一个创建实例有没有别的办法?

以上是关于通知开启活动B后回归主线的主要内容,如果未能解决你的问题,请参考以下文章

从通知中导航到父活动

通知点击:活动已开启

单击通知后如何进行特定活动

通知Android后显示活动

重要通知 | 2021版《测试开发宝典》发货啦!文末含订单查询方式

如何在创建后通过更改活动来处理推送通知意图?