我的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,因此该解决方案是不够的。

最佳答案

FLAG_ACTIVITY_NEW_TASK似乎不足。同时使用FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK可以:

      startActivity(new Intent(MainActivity.this, ActivityTwo.class)
        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK));

关于android - 开始不支持多窗口的新 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39297184/

10-08 21:15