首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定活动时的Android taskAffinity问题

指定活动时的Android taskAffinity问题
EN

Stack Overflow用户
提问于 2011-06-21 03:09:29
回答 2查看 3.5K关注 0票数 0

我正在处理一个奇怪的问题。

基本上,我有一个应用程序(由另一个开发人员制作),它的activity将其taskAffinity指定为"“,将其launchMode指定为"singleTask”。

当手机收到通知时,我会在我的应用程序中启动一个带有FLAG_ACTIVITY_NEW_TASK标志的活动。

如果任务存在,我希望我的活动具有另一个应用程序的taskAffinity。

当我执行dumpsys activity时,我看到其他开发人员的应用程序TaskRecord是:

代码语言:javascript
复制
aj.streetPhone.app/.ViewActivity

但是,在我活动清单中,我指定了aj.streetphone.app,它似乎不会将我的活动添加到应用程序任务中。我尝试了另一个包名称,它似乎是有效的。问题可能与任务名称包括活动,而不仅仅是包名称(默认名称)有关。

我基本上在使用'/‘时遇到了问题,因为清单不接受它。

代码语言:javascript
复制
android:taskAffinity="aj.streetPhone.app/.ViewActivity" <--- does not work!

我尝试转义由unicode添加的'/',所有内容。请帮帮我!

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-02-28 03:06:14

任务亲和力(以及权限、进程、共享用户ID和操作等)不受应用程序包名称的限定。它们是一个单一的字符串,很多都必须是全局唯一的。仅仅添加".foo“并不能使其独一无二,因为另一个应用程序的包名可能会比你自己的包更短或更长,但也会出现相同的名称。因此,对于亲和性和进程,您可以在名称中使用":“前缀,将其附加到您自己的包名称中,并创建一个保证对您的包唯一的名称。

所以你必须为你的任务关联使用一个唯一的字符串。

票数 1
EN

Stack Overflow用户

发布于 2012-12-15 03:58:56

/确实无效。

除非它以某种方式缩写(快速浏览一下我自己的应用程序的dumpsys activity,就会发现并非如此),否则您的活动的全名是aj.streetPhone.app.ViewActivity。但是,如果你想把你的包名放在taskAffinity的前面,你可以简单地使用冒号,例如:myAffinity。也就是说,taskAffinity不应该是活动的名称!

据我所知,taskAffinity是用来控制活动属于哪个“任务”的。虽然我不能评论为什么你试图将一个活动附加到另一个应用程序的任务中,但你可能想要清除亲和力,以表明该活动可以在任何任务中;虽然我还没有尝试过,但我想这会导致,例如,返回按钮返回到用户之前正在进行的任何活动,而不是返回到你的应用程序(你的任务)中最后活动的任何活动。

更多信息(仅供参考,这是chemalarrea引用的地方,但没有给出信任):https://groups.google.com/forum/?fromgroups=#!topic/android-developers/wKwnV1k_96A

文档:https://developer.android.com/guide/topics/manifest/activity-element.html#aff

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6416159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档