首先,可以检查堆栈结构。 对于启动模式:singleTop
如果相同活动的实例已经在任务堆栈的顶部,那么该实例将被重用以响应意图。
所有活动都保存在堆栈中(“先进先出”),因此,如果当前活动位于堆栈顶部,并且在manifest.file中将其定义为singleTop
android:name=".ActivityA"
android:launchMode="singleTop"
如果您在ActivityA中,则重新创建活动将不会输入onCreate,它将继续onNewIntent(),您可以通过创建通知来查看不:如果您未实现onNewIntent(Intent),则不会获得新的意图。
Intent activityMain = new Intent(ActivityA.this,
ActivityA.class);
activityMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(activityMain);
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
notify("onNewIntent");
}
private void notify(String methodName) {
String name = this.getClass().getName();
String[] strings = name.split("\\.");
Notification noti = new Notification.Builder(this)
.setContentTitle(methodName + "" + strings[strings.length - 1])
.setAutoCancel(true).setSmallIcon(R.drawable.ic_launcher)
.setContentText(name).build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify((int) System.currentTimeMillis(), noti);
}