我的应用应在广播接收机操作后打开。但是,如果我的应用程序在当前时刻打开,我需要删除以前的MainActivity并创建一个新的MainActivity。如何从广播接收器启动MainActivity并在活动之前开始删除以前的MainActivity?2广播接收机后的主要活动
广播:
Intent initialIntent = context.getPackageManager().getLaunchIntentForPackage("com.cc.dd");
initialIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
initialIntent.putExtra(Constants.NUMBER,getIncomingNumber(mCallState));
context.startActivity(initialIntent);
我试图用标志,但我有奇怪的日志:
d/CallReceiver:主营:[振铃]
d/CallReceiver:主营:[来电true]
D/MainActivity:main:[ON_PAUSE]
D/MainActivity:main:[ON_CREATE]
D/MainActivity:main:[ON_START]
d/MainActivity:主营:[ON_RESUME]
我看到在MainActivity以前的版本去的onPause和新版本的开始。为什么以前的版本不会删除?
您可以在清单中的activity标签中添加'android:launchMode =“singleInstance”''。这确保您的活动只能打开一次.... – Opiatefuchs
您面临的问题是什么 –
因此,如果您想杀死所有以前的活动,只需按照这些方法。在API级别11或更高版本中,使用Intent上的FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK标志清除所有活动堆栈。 initialint.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent。FLAG_ACTIVITY_NEW_TASK); initialIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent。FLAG_ACTIVITY_NEW_TASK); 另一种方式是android:launchMode =“singleInstance”Opiatefuchs如何说。 – YLS