【发布时间】: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