如果我退出这个新实例,第一个实例仍在运行,这是关于我的应用程序的安全目标的问题。
我尝试使用FLAG_ACTIVITY_CLEAR_TOP在第一个实例中使用该活动,但它不起作用,因为它与操作系统启动的应用程序不同。
有办法做到这一点吗?如果是,你可以给我一些提示或一些线索吗?
我的清单:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >
<activity android:name=".SplashScreenActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ExplorerActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.Light.NoTitleBar" >
</activity>
<activity
android:name=".ChooseDialogActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
</application>
这是我的清单。常用流程:SplashScreenActivity - &gt; ExplorerActivity
分享流程:ChooseDialogActivity - &gt; ExplorerActivity
我想要的是,如果此活动已存在,则第二个ExplorerActivity
必须与第一个ExplorerActivity
相同。
答案 0 :(得分:1)
请不要使用launchMode =“singleInstance”。这不是你想要的。 singleInstance仅适用于HOME屏幕和类似应用程序。
尝试在共享时使用Intent.FLAG_ACTIVITY_NEW_TASK
。这会将您的应用程序与文件浏览应用程序分开,并可能获得您想要的行为。您可能还需要添加FLAG_ACTIVIY_CLEAR_TOP
,具体取决于您对应用进行编程的方式。
修改强>
从ChooserActivity启动ExplorerActivity时,请执行此操作(或类似操作):
Intent intent = new Intent(this, ChooserActivity.class);
intent.addFlags(Intent.ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
如果已经有一个包含ChooserActivity的任务正在运行,那么这应该将该任务带到前台,而不是创建一个新的ChooserActivity实例。
答案 1 :(得分:0)
使用launchmode,这将保留主活动中的一个实例,以便对主页活动进行此更改。
<activity ..
...
..
android:launchMode="singleInstance" />
答案 2 :(得分:-1)
尝试android:launchMode="singleInstance"