因此,我有一个活动a,它在androidmanifest.xml中定义如下:
<activity
android:name=".activity.A"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
此活动将启动欢迎屏幕,我们将其称为活动B。
如果启动应用程序,将显示欢迎屏幕,然后用户完成其活动a后返回。
我遇到的问题是,当我从欢迎屏幕按“主页”按钮时,我会按预期返回主页屏幕。现在,当我重新单击应用程序图标时,应用程序将不会启动。相反,我的活动A和B都被破坏了。如果我再次单击该图标,则应用程序将按预期重新启动。
现在,如果我在欢迎屏幕上按下后退箭头并重新单击应用程序图标,它将按预期启动应用程序。我不用推两次。
不幸的是,我不得不使用launchmode=“singletask”,因为这是与另一个团队集成的要求。我已经多次阅读了android api的任务和后台堆栈。如有任何意见或建议,将不胜感激。
我发现a blog表示有一个未记录的bug,它同时使用了singletask和intent过滤器,但是没有找到任何关于这个的官方文档。
谢谢
编辑
像这样启动活动B:
Intent intent = new Intent(context, B.class);
startActivityForResult(intent, CONST_VAR);
最佳答案
我试着做了两个从活动a启动活动b的活动,我没有看到问题中描述的问题。pfb我的清单。另外,当你说Home按钮时,是Phone Home按钮还是你的应用程序特定的Home按钮。pfb我的清单
<activity
android:name="com.android.testsingletask.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.android.testsingletask.WelcomeActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden"
android:label="@string/app_name" >
</activity>