当前 Activity(使用 SingleTask launchMode)在从主屏幕返回后不恢复(改为调用启动器 Activity 的 onNewIntent)

Current Activity (with SingleTask launchMode) does not Resume after returning from Home Screen (Calls onNewIntent for launcher Activity instead)

我有两个活动,一个是 Splash Activity(在单击启动器图标时启动),另一个是 Map activity(稍后在用户登录后通过意图启动在)。

有时,当地图 Activity 打开时,我会转到主屏幕,然后尝试在几秒钟后从中断处恢复应用程序。我注意到当我单击主屏幕上的启动器图标以恢复当前 activity(地图 Activity)时,我被重定向到 Splash activity。这违背了 Android 文档中列出的行为。

根据文档: “当用户通过按下主页按钮离开任务时,当前 activity 停止并且其任务进入后台。系统保留任务中每个 activity 的状态。如果用户稍后通过选择启动任务的启动器图标恢复任务,任务进入前台并恢复堆栈顶部的activity。

当地图activity为运行时,我的后台堆栈为:

---MapActivity (front-facing activity)
---SplashActivity

当我点击主页时,我看到 onStop() 在 MapActivity 中被调用(正如预期的那样),但是当我点击启动器时 activity,然后 MapActivity在 SplashActivity 中销毁并调用 onNewIntent。有谁知道是什么导致了这种行为?

我的 Android 清单是:

 <activity
    android:name=".SplashActivity"
    android:exported="true"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <action android:name="com.deca.mw.SplashActivity" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
<activity
    android:name=".activity.MapActivity"
    android:hardwareAccelerated="true"
    android:launchMode="singleTask" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
</activity>

启动 MapActivity 的目的是:

   Intent intent = new Intent(appContext, MapActivity.class);
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   appContext.startActivity(intent);

这是您的 Android 清单中的 android:launchMode="singleTask" 设置。尝试将其删除,看看是否可以解决您描述的问题。