我的应用程序应在广播接收器操作后打开。但是如果我的应用程序在当前时刻打开,我需要删除以前的MainActivity并创建一个新的MainActivity。如何从广播接收器启动MainActivity并删除以前的MainActivity,如果活动开始之前?
广播:
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:main:[RINGING]
D / CallReceiver:main:[来电真实]
D / MainActivity:main:[ON_PAUSE]
D / MainActivity:main:[ON_CREATE]
D / MainActivity:main:[ON_START]
D / MainActivity:main:[ON_RESUME]
我看到MainActivity以前的版本转到onPause并且新版本开始。为什么以前的版本不删除?
答案 0 :(得分:3)
如果要结束活动的生命周期,则需要调用finish()。以下代码将简单地重新启动当前活动:
Intent intent = getIntent();
finish();
startActivity(intent);
或
Intent intent = new Intent(YourActivity.this,YourActivity.class);
startActivity(intent);
finish();
参考文献:
答案 1 :(得分:1)
您只需添加:
android:launchMode = "singleInstance"
到清单中的活动代码。这可确保您的活动仅打开一次。例如:
<activity
android:name=".YourActivity"
android:label="@string/your_activity_name"
android:launchMode = "singleInstance" />
答案 2 :(得分:0)
我认为你无法删除以前的活动。你可以为你的活动添加标志 singleInstance 。