例如,我用2个活动创建了项目:FirstActivity with android:launchMode ="singleTask"flag和SecondActivity.
首先,用户启动FirstActivity,然后在按钮单击时启动SecondActivity.从SecondActivity我们创建状态栏通知.
Intent intent = new Intent(SecondActivity.this, FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(FirstActivity.ARG, true);
NotificationCompat.Builder builder = new NotificationCompat.Builder(SecondActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setAutoCancel(true)
.setContentTitle("title")
.setContentText("message");
PendingIntent notifyIntent = PendingIntent.getActivity(SecondActivity.this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
builder.setContentIntent(notifyIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1000, builder.build());
Run Code Online (Sandbox Code Playgroud)
当我点击此通知并且我的应用程序现在正在运行时,将执行FirstActivity#onNewIntent方法并且intent包含ARG extra = true.这是好的情况.
当我点击此通知并且我的应用程序现在没有运行时,将不会执行FirstActivity#onNewIntent方法,但是不会执行FirstActivity#onCreate()而我将获得我的ARG标记,如此
getIntent().getBooleanExtra(ARG, false)
意图包含ARG extra = true .这也是正确的情况.
但是当我在情境2按下后退按钮并再次运行应用程序后尝试退出我的应用程序时,我收到了FirstActivity#onCreate()意图,其中ARG = true(我处理的旧额外值).重新打开应用程序后为什么我的旗帜"真实"?
android android-intent android-notifications android-activity android-pendingintent
android ×1