我遇到一个以FLAG_ACTIVITY_REORDER_TO_FRONT开头的活动有问题,在FLAG_ACTIVITY_CLEAR_TASK之后,屏幕上没有重新创建并显示。
所以步骤是:
因此应用程序将在第1阶段后再次进入阶段2,这是我的预期,但是,如果我尝试使用活动A中的FLAG_ACTIVITY_REORDER_TO_FRONT再次启动活动B,则会有活动B的回调'onNewIntent,onStart,onResume'连续,但它不会出现在屏幕上。 对我来说,在某个地方仍然存在先前的活动B实例,但没有向我展示。
我没有为活动A或B指定启动模式。
我知道该文档说明了FLAG_ACTIVITY_CLEAR_TASK“这只能与FLAG_ACTIVITY_NEW_TASK一起使用。”。并且一起使用它们确实解决了我的问题,但是如果我点击主页按钮放置应用程序背景然后再次启动,它将成为另一个应用程序启动(进入阶段1)但不回到之前的顶级活动。
所以我的问题是:
第5阶段的代码:
Intent i = new Intent(A.this, WelcomeActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
提前致谢。
的AndroidManifest.xml
<activity
android:name=".activity.WelcomeActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.A_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:theme="@style/BaiduMapTheme.MainMap"
android:windowSoftInputMode="adjustPan" />
<activity
android:name=".activity.B_Activity"
android:configChanges="locale|fontScale|keyboard|keyboardHidden|layoutDirection|mcc|mnc|navigation|orientation|screenLayout|screenSize|touchscreen|uiMode"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible" />
答案 0 :(得分:0)
好的,现在我觉得我有这些问题是因为我错误地使用了意图标记。
首先,我应该在文档说明的同时使用FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK。
然后一切看起来正常并且符合预期,除了一个:如果我将应用程序置于后台然后再次单击启动图标,将再次创建WelcomeActivity。
以前我认为我的现有活动堆栈被清除并且创建了一个新的WelcomeActivity,但事实证明现有的活动堆栈仍然存在,但是创建了一个额外的WelcomeActivity,所以我需要做的是添加一些额外的标志WelcomeActivity确定它是否在这种情况下创建,如果是,那么只需在onCreate()中调用finish(),然后我就可以回到之前进入后台的活动。