android:launchMode=";“单实例”;使应用程序速度非常慢

android:launchMode=";“单实例”;使应用程序速度非常慢,android,android-launcher,Android,Android Launcher,我的应用程序中有2个活动。A活动是启动器活动。当我第一次运行应用程序时,启动程序活动将运行,但当我按下home按钮并通过单击应用程序图标从那里重新启动应用程序时,我始终会运行B活动。 我想确保启动应用程序时始终运行活动A 这是清单代码: <application android:icon="@drawable/icon" android:label="@string/app_name" > <activity

我的应用程序中有2个活动。A活动是启动器活动。当我第一次运行应用程序时,启动程序活动将运行,但当我按下home按钮并通过单击应用程序图标从那里重新启动应用程序时,我始终会运行B活动。
我想确保启动应用程序时始终运行活动A

这是清单代码:

 <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
            android:name="com.velosys.smsManager.Activities.a"
            android:launchMode="singleInstance"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.velosys.smsManager.Activities.b" />
</application>


使用android:launchMode=“singleInstance”符合我的目的,但它会使从一个活动到另一个活动的移动速度非常慢。您能否建议我使用“android:launchMode=“singleInstance”的任何选项。请帮助我。提前谢谢。

您可以尝试在B活动中重写onUserLeaveHint()方法(这将注册主页按钮按下事件),然后创建意图

    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(startMain);
这并不是一个理想的解决方案

编辑:


是的,sry,最好的解决方案是调用B活动的finish()inside onPause()方法

对不起,先生,但我需要一个我应该依赖的答案。检查编辑并删除android:launchMode=“singleInstance”先生,我不能在onPause()内使用finish()B活动的方法,因为在任何调用将到达设备的情况下,将调用onPause(),用户将不得不重新启动整个过程。您能建议我处理home按钮单击的方法吗?是的,您可以在onUserLeaveHint()中输入finish只有在按下“主页”按钮时才会调用。这样一来,来电将不会完成活动,而只有“主页”按钮会处理“主页”按钮按下或“后退”按钮按下,因为它也会处理“后退”按钮按下,这可能会给我造成问题。