【发布时间】:2017-01-10 20:27:26
【问题描述】:
我的MainActivity 支持Android N 新的多窗口模式。但是,我希望我的 AwesomeActivity 不支持多窗口。
我尝试了以下方法:
AndroidManifest.xml
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"/>
<activity android:name=".activities.AwesomeActivity"
android:resizeableActivity="false" />
MainActivity.java
Intent intent = new Intent(this, AwesomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
//removing CLEAR_TOP and SINGLE_TOP has no effect either
//Intent.FLAG_ACTIVITY_CLEAR_TASK in conjunction with Intent.FLAG_ACTIVITY_NEW_TASK does not have an effect either
我认为通过添加Intent.FLAG_ACTIVITY_NEW_TASK(有或没有Intent.FLAG_ACTIVITY_CLEAR_TASK),这意味着AwesomeActivity 将是它自己的任务堆栈中的根活动,因此,我应该无法获得多-AwesomeActivity的窗口模式。
但是,这不起作用,我仍然可以从AwesomeActivity 切换到多窗口模式,这不是所需的行为。
虽然Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK 的组合似乎可以启动 AwesomeActivity,但从某种意义上说,如果您在 AwesomeActivity 中将应用程序置于后台,然后将 AwesomeActivity 带回前台,您将无法返回到 MainActivity,因为它已从任务堆栈中擦除。我相信在大多数情况下,用户希望能够返回到MainActivity,所以这个解决方案是不够的。
【问题讨论】:
-
你的
targetSdkVersion是什么?如果您删除CLEAR_TOP和SINGLE_TOP(AFAIK,您在这里不需要)会有什么变化吗? -
我删除了
CLEAR_TOP和FLAG_ACTIVITY_SINGLE仍然无法正常工作。 -
@CommonsWare TargetSdkVersion 为 24
-
尝试先进入多窗口模式,
MainActivity向上。然后,开始AwesomeActivity。设备是否退出多窗口模式? -
@CommonsWare 不,当我进入 AwesomeActivity 时,设备不会退出多窗口模式:(
标签: android android-studio multi-window android-7.0-nougat