2广播接收器后的MainActivities

时间:2016-06-21 07:50:21

标签: android android-activity

我的应用程序应在广播接收器操作后打开。但是如果我的应用程序在当前时刻打开,我需要删除以前的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并且新版本开始。为什么以前的版本不删除?

3 个答案:

答案 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