【问题标题】:Current Activity (with SingleTask launchMode) does not Resume after returning from Home Screen (Calls onNewIntent for launcher Activity instead)当前活动(使用 SingleTask 启动模式)在从主屏幕返回后不恢复(改为调用 onNewIntent 启动器活动)
【发布时间】:2016-02-19 14:50:45
【问题描述】:

我有两个 Activity,一个 Splash Activity(在单击启动器图标时启动)和一个 Map Activity(稍后在用户登录后由 Intent 启动)。

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

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

当地图活动运行时,我的后台堆栈是:

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

当我单击主页时,我看到在 MapActivity 中调用了 onStop()(如预期的那样),但是当我单击启动器活动时,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);

【问题讨论】:

  • 你的 onDestroy() 是否在 MapActivity 中被调用? Android 可能已决定终止此应用,然后启动您的 Splash 应用,因为它是默认应用。

标签: android back-stack


【解决方案1】:

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

【讨论】:

  • 它似乎是由 singleTask 引起的。当我使用 singleInstance 时,问题不存在。知道为什么 singleTask 会导致这种行为吗?
  • developer.android.com/guide/topics/manifest/… 声明 singleTasksingleInstance 模式是 Specialized launches (not recommended for general use)。您真的需要设置应用程序的活动以使用此模式启动吗?通过阅读上面的链接,似乎在单任务模式下,当您单击主页按钮时,单任务活动上方的所有活动都会从堆栈中删除。
  • 这里也有不错的阅读:developer.android.com/guide/components/…
猜你喜欢
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
相关资源
最近更新 更多