gpt4 book ai didi

Android:launchMode ="singleTask"的行为与描述不符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:52 25 4
gpt4 key购买 nike

我一直在学习 Android,并且遇到了 launchMode="singleTask"的问题。文档指出,当使用此属性时,Activity 始终作为根 Activity 启动到新任务中。其次,文档指出,如果一个 Intent 以此类 Activity 为目标,而在其任务堆栈中有 Activity 位于它之上,则此类 Intent 将被丢弃(尽管该任务仍被带到前台)。

我一直在玩这个,我观察到的行为是完全不同的。尤其是:- 具有 launchMode="singleTask"的 Activity 并不总是任务堆栈中的根 Activity 。它们只是以相同的亲和性放置在现有堆栈的顶部。- 当一个Intent针对的是这样一个Activity,并且栈中还有其他在它上面的Activity时,这个Intent不会被丢弃。相反,堆栈中位于其上方的 Activity 将被丢弃。 Intent 然后通过 onNewIntent 照常传递给 Activity。

有人可以确认这是实际行为吗?如果是这样,为什么文件不正确?如果不是我做错了什么。 . .

编辑:

可在此处找到演示此行为的示例: http://groups.google.co.uk/group/android-developers/browse_thread/thread/fd8f249803b4688a#抱歉交叉发布,但是我无法以合适的格式获得示例以发布在这里...

最佳答案

这是taskAffinity的问题.当您开始一项 Activity 时,Android 会检查 taskAffinity您要开始的 Activity 。如果与taskAffinity相同任务中的根 Activity ,那么它将忽略launchMode="singleInstance"launchMode="singleTask" (因为这些启动模式需要 Android 创建一个新任务来启动 Activity)并在当前任务中启动 Activity。

不幸的是,这没有很好的记录,但是 taskAffinity优先于 launchMode .

如果你真的想要一个singleTasksingleInstance Activity (这通常不是正确的做法,因为它会带来一大堆其他你可能会出错的讨厌的事情),那么你需要确保你的 singleInstancesingleTask Activity 在其 <activity> 的 list 中具有以下内容定义:

android:taskAffinity=""

关于Android:launchMode ="singleTask"的行为与描述不符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com