从后台打开应用程序时,应用程序启动器活动会重新打开

时间:2018-12-28 15:33:27

标签: android

我在Google Play商店中有一个应用。我在这里发现了一个有趣的错误-当我将应用程序发送到后台(按主屏幕),然后再次单击应用程序图标时,它将打开主屏幕。

我阅读了有关它的文章(https://medium.com/@elye.project/three-important-yet-unbeknown-android-app-launcher-behaviors-part-2-139a4d88157),尝试了所有应用程序状态,但是行为保持不变。但是,如果我打开我的ADB应用程序(或从Studio),则一切正常。

该如何解决?我的清单文件如下所示:

<uses-feature
    android:name="android.hardware.touchscreen.multitouch"
    android:required="false" />

<uses-feature
    android:name="android.hardware..accelerometer"
    android:required="true" />

<uses-feature
    android:name="android.hardware.telephony"
    android:required="false" />

<application
    android:name=".MyApplication"
    android:launchMode="singleTop">

    <activity
        android:name=".ui.main.MainActivity"
        android:configChanges="orientation|screenSize"
        android:screenOrientation="portrait"
        android:launchMode="singleTop">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="signin"
                android:scheme="appprefix" />
        </intent-filter>
    </activity>

    <activity
        android:name=".ui.view.Acitivity2"
        android:configChanges="orientation|screenSize"
        android:screenOrientation="portrait"
        android:launchMode="singleTop"/>

    <activity
        android:name=".ui.view.Acitivity3"
        android:configChanges="orientation|screenSize"
        android:screenOrientation="portrait"
        android:launchMode="singleTop"/>

1 个答案:

答案 0 :(得分:0)

针对市场发布的可能解决方法。市场在其他活动之上启动主要活动。我们从不希望这种情况发生。相反,我们应该检查我们是否是根,如果不是,则完成当前操作。在启动器活动onCreate()上添加以下代码

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