通知开启活动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后回归主线的主要内容,如果未能解决你的问题,请参考以下文章