Android 混淆活动启动
设置启动模式的第一种方法Android 混淆活动启动,android,Android,设置启动模式的第一种方法 Notification.Builder builder = new Notification.Builder(getContext()); builder.setAutoCancel(true); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setLargeIcon(BitmapFactory.decodeResource(getCont
Notification.Builder builder = new Notification.Builder(getContext());
builder.setAutoCancel(true);
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setLargeIcon(BitmapFactory.decodeResource(getContext().getResources(), R.mipmap.ic_launcher));
builder.setContentTitle("abc");
builder.setContentText("abc");
builder.setContentIntent(PendingIntent.getActivity(getContext(), 0,
new Intent(getContext(), MainActivity.class).replaceExtras(bundle).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP),
PendingIntent.FLAG_UPDATE_CURRENT));
builder.setDefaults(Notification.DEFAULT_SOUND);
NotificationManager manager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
在新任务中启动活动
。如果您现在正在启动的活动的任务已在运行,则该任务将被带到前台并恢复其最后状态,并且该活动将在onNewIntent()
中接收新的意图。
这将产生与上一节讨论的“singleTask”launchMode值相同的行为
活动堆栈a、b、main活动
为什么不以第一种方式调用onNewIntent()
。
为什么活动(a,b)没有以第一种方式清洁
FLAG\u ACTIVITY\u NEW\u TASK
,此活动将成为此历史堆栈上新任务的开始使用“singleTask”和“singleInstance”的活动并不总是在活动堆栈的根目录下。您的第一点是错误的:“系统创建一个新任务并在新任务的根目录下实例化该活动。但是,如果该活动的一个实例已经存在于一个单独的任务中,则系统会将意图路由到现有实例”@我同意你的看法。
<activity
android:name=".activity.mainActivity.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:launchMode="singleTask"/>
FLAG_ACTIVITY_NEW_TASK