当用户单击应用程序图标时,App会创建一个新实例

时间:2017-08-02 18:44:54

标签: android

我有几个活动的应用程序,当用户点击设备启动器中的应用程序图标时我遇到问题该应用程序转到启动器活动并创建他的新实例 这只有在我生成apk时才会发生。 这是使情况更加明确的方案:

活动A - >转到 - >活动B. 用户最小化应用程序并单击启动器中的应用程序图标活动A创建新实例。

这是我的清单

<application android:name=".MyApp" 
 android:allowBackup="false" 
 android:fullBackupContent="false" 
 android:icon="@mipmap/ic_launcher" 
 android:label="@string/app_name" 
 android:theme="@style/AppTheme">
<activity android:name="com.myapp.ActivityA">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
//More activities
</application>

3 个答案:

答案 0 :(得分:2)

在Acitiviy A(你的启动器活动)中将它放在onCreate()中:

if (!isTaskRoot()) {
final Intent intent = getIntent();
final String intentAction = intent.getAction(); 
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && 
intentAction.equals(Intent.ACTION_MAIN)) {
    finish();
    return;       
 }
}

答案 1 :(得分:2)

所以这是一个自API 1以来就存在的错误。特别是对于像三星这样在Android上使用自己的皮肤的制造商。假设您将活动A作为主要活动,并打开活动B.您最小化应用程序并再次从启动器打开应用程序。 Android将在应用程序的调用堆栈顶部启动Activity A.因此新的调用栈是A-> B-> A. 一种解决方法是在启动初始Activity的intent中检查Intent.CATEGORY_LAUNCHER类别和Intent.ACTION_MAIN操作。如果存在这两个标志并且Activity不在任务的根目录(意味着应用程序已在运行),请在初始Activity上调用finish()。

所以在应用的Sub RunAccessMacro() Dim PathOfDatabase As String PathOfDatabase = ThisWorkbook.Worksheets("Updates").Range("PathToAccess") Dim accApp As Access.Application Set accApp = New Access.Application With accApp .OpenCurrentDatabase PathOfDatabase .DoCmd.RunMacro "Macro_Run_Key" .Quit End With MsgBox "Done! All processes complete!!" End Sub 中,就像这样

onCreate()

如果这对您有用,请告诉我。 :)

答案 2 :(得分:0)

在您的启动器活动中添加清单

android:launchMode="singleTask"

android:launchMode="singleInstance"