Android棒棒糖行为改变

Android棒棒糖行为改变,android,android-5.0-lollipop,launchmode,Android,Android 5.0 Lollipop,Launchmode,根据Android棒棒糖的变化,参考: 我希望当我从我的应用程序启动其他应用程序的活动时,它应该在新任务中打开,即使行为是默认的(launchmode是标准的)。因此,我制作了两个测试应用程序来验证相同的行为。但令人惊讶的是,如果没有指定启动模式,另一个应用程序总是在我的应用程序任务中打开。我已经在小米Redmi Note 3(5.1.1)和棉花糖模拟器(x86)上测试过,两者的行为都是一样的。我非常感谢您在这方面的帮助,同时也感谢您在Android开发者网站上提供一个参考链接 一些代码:

根据Android棒棒糖的变化,参考:

我希望当我从我的应用程序启动其他应用程序的活动时,它应该在新任务中打开,即使行为是默认的(launchmode是标准的)。因此,我制作了两个测试应用程序来验证相同的行为。但令人惊讶的是,如果没有指定启动模式,另一个应用程序总是在我的应用程序任务中打开。我已经在小米Redmi Note 3(5.1.1)和棉花糖模拟器(x86)上测试过,两者的行为都是一样的。我非常感谢您在这方面的帮助,同时也感谢您在Android开发者网站上提供一个参考链接

一些代码:

Launching app : 
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
startActivity(intent);
break;

App to be launched : 
<activity android:name="com.android.sample.launchdemo.ActivityB">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
</activity>
启动应用程序:
意图=新意图();
intent.setAction(intent.ACTION\u SEND);
星触觉(意向);
打破
即将推出的应用程序:

在启动应用程序时单击按钮,就会触发意图,活动B成功打开,但处于同一任务中。提前感谢您提供的任何帮助/建议。

查看文档后,我感觉标准模式的工作方式与Android 5.0(棒棒糖)之前的工作方式相同。cheese factory的博文是唯一一篇指定操作的博文,即使在我自己的经验中,标准启动模式也在发送的相同任务中打开了活动(除非传递了意图标志)。如果我错了,有人会纠正我,但Android文档中没有指定标准模式将打开一个新任务。从Android文档中:

“标准”(默认模式):系统在启动活动的任务中创建活动的新实例,并将意图传递给该活动。活动可以多次实例化,每个实例可以属于不同的任务,一个任务可以有多个实例

对于您正在寻找的内容,当启动
意图时,确保新任务的唯一方法是使用标志
标志活动新任务。您可以通过调用
intent.setFlag(intent.FLAG\u ACTIVITY\u NEW\u TASK)
intent.addFlags(intent.FLAG\u ACTIVITY\u NEW\u TASK)
(后者用于将标志链接在一起,因为该方法将返回意图)

在做了更多的研究之后,Android 5.0棒棒糖中唯一的变化(与此相关)是最近的应用程序屏幕可以显示一个活动的多个实例

在以前的版本中,对于用户最近与之交互的每个应用程序,recents屏幕只能显示一个任务。现在,您的应用程序可以根据需要打开更多任务,以进行其他并发文档活动。此功能允许用户从“最近”屏幕在单个活动和文档之间快速切换,并在所有应用程序之间提供一致的切换体验,从而方便多任务处理。此类并发任务的示例可能包括web浏览器应用程序中打开的选项卡、生产力应用程序中的文档、游戏中的并发匹配或消息传递应用程序中的聊天


对我来说,这似乎是唯一相关的变化,post(cheesefactory等)设置了
documentLaunchMode
为每个活动创建新任务(考虑到cheesefactory有一个“Gallery”应用程序,这种情况很可能会发生)。关于和的文件
documentLaunchMode
和标志
flag\u ACTIVITY\u NEW\u TASK
可以配置为执行类似的操作
documentLaunchMode
是首选

我找到了下面的文档

=>当用户使用浏览器时,点击共享>Gmail。Gmail应用程序的撰写屏幕出现。此时点击“最近”按钮,Chrome和Gmail将作为单独的任务运行。在较低版本的Android中,所有活动都显示为单个任务,使后退按钮成为唯一的导航方式。图2显示了在Android 5.0及更高版本中,与低版本平台相比,Recents屏幕的外观。Android 5.0及更高版本的左侧屏幕上的图像,右侧的图像显示了它在较低版本的Android中的显示方式

并参考以下链接。

=>默认情况下,myfirstapp.MainActivity的启动模式为“标准”,未设置任何意图标志。 但在myfirstapp.MainActivity通过相册的共享操作启动后,意向标志包含flag_ACTIVITY_MULTIPLE_TASK、flag_ACTIVITY_NEW_DOCUMENT

通过共享启动活动时,工具栏中包含共享的活动只需将意图设置为其ShareActionProvider,然后ShareActionProvider以此意图启动活动—在本例中为myfirstapp.MainActivity


因此,我认为从棒棒糖开始,系统会从另一个应用程序开始一个新的活动任务,该应用程序的启动模式是“标准”的,只有当活动通过共享操作启动时

@Yvette您是对的,但不幸的是,删除启动模式并不会改变行为。我已经更新了问题中的代码片段。我也有同样的感觉,但这两个链接相互矛盾,这造成了一些混乱。另外,据我记忆所及,我在开发者的网站上的某个地方看到过这种新的行为,但再也找不到了。它似乎不知何故丢失了。@gauravjain我也发现了这种行为的其他实例,但从未在开发人员网站上发现过,也许该功能是在实现后被删除的?我会继续调查,看看能不能找到一个solution@gauravjain我已经更新了我的答案,包括更多的研究,并接受这个答案,因为它是最接近解决方案的答案。很抱歉没有找到更好的。