防止多次打开活动

我有我的应用程序与图标的通用菜单。 点击一个图标将启动一个活动。 有没有办法知道一个活动是否已经运行,并防止它多次(或从多个条目)启动? 我也可以把一个在onPause状态的活动带到前面吗?

Solutions Collecting From Web of "防止多次打开活动"

用这个:

 intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

同时启动Activity

从文档 :

如果在传递给Context.startActivity()的Intent中设置,则此标志将导致已启动的活动被带到其任务历史堆栈的前面(如果它已经在运行)。

在Manifest文件的活动声明中,添加标签android:launchMode="singleInstance"

我完成了以下工作。 在来电者的活动或服务(甚至从另一个应用程序)

 Intent launchIntent = getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME); //the previous line can be replaced by the normal Intent that has the activity name Intent launchIntent = new Intent(ActivityA.this, ActivityB.class); launchIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(launchIntent); 

并在接收器活动的清单(我想防止两次开放)

  <activity android:name=".MainActivity" android:launchMode="singleTask" > 

创build一个你不想多次启动的活动实例

 Class ExampleA extends Activity { public static Activity classAinstance = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); classAinstance = this; } } 

现在,你想要交叉检查的地方,我的意思是防止它多次启动,像这样检查

 if(ExampleA.classAinstance == null) { "Then only start your activity" } 

将其添加到Androidmanifest.xmlActivity定义中

 android:launchMode = "singleInstance" 

只是使用

 Intent i = new Intent(ActivityA.this, ActivityB.class); i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(i); 

添加这个

 @Override protected void onDestroy() { super.onDestroy(); finish(); } 

要么

launchmode到singleTask / singlemode

要么

始终通过清除堆栈来打开新的活动