3

我已经搜索和搜索并搜索了这个!

所以我有一个应用小部件,它有一个配置活动,我可以在按下应用上的按钮时打开它。场景是:

是否打开了应用程序。

使用主页按钮关闭应用程序。

选择添加我的小部件

我已经配置了小部件。

放置在我的主屏幕上

然后使用小部件上的按钮再次打开配置活动。

按返回取消新配置将使我回到应用程序。

当按回来时,我只想回家。

基本上我要问的是。如何在它自己的任务/堆栈中启动配置活动?

我已经研究过意图过滤器,但我不太确定,或者它可能与它所在的包有关,或者它是不可能的!

我想这可能与我用来启动配置活动的意图有关

 Intent configIntent = new Intent(this, Configuration.class);
 configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      
 remoteView.setOnClickPendingIntent(R.id.config, PendingIntent.getActivity(this, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT));

也许是因为我以“this”作为上下文启动它,它总是在我的应用程序堆栈中启动......但待处理的意图 api 是:PendingIntent API 1 “请注意,该活动将在现有活动的上下文之外启动"

所以是的,我现在停止说话,因为我最终会绕圈子!

编辑

android:launchMode="singleInstance"因此,在清单中进行了尝试,如已说明。这有效,但是它阻止了“startActivityForResult”行为的正常工作。(这是配置活动的全部原因)得到错误:

WARN/ActivityManager(59): Activity 正在作为新任务启动,因此取消 Activity 结果。

所以还没有找到解决办法。

4

2 回答 2

9

好的对它进行排序:-) 需要:

android:taskAffinity=""

在清单中,将任务关联设置为空字符串允许活动在它自己的堆栈中启动,因为它不与应用程序的其余部分“关联”。

更新

我已将任务关联更改为:android:taskAffinity="com.my.package.alternative.task",因为每次启动该活动时,它都会在“历史记录”中多次显示。所以它现在从它自己的堆栈开始,但与同一活动的其他实例共享。

还需要添加Flag Intent.FLAG_ACTIVITY_NO_HISTORY到您的意图:-) 当您“按住”主页按钮时,这会阻止您在历史记录中多次获取您的应用程序。

更新

我注意到 FLAG_ACTIVITY_NO_HISTORY 没有做我想做的事,我已将其删除并添加:

android:excludeFromRecents="true"

也进入清单中的活动标签。活动现在的行为就像我想要的那样:-)

从以下链接中得到了这个答案: Tasks & Back Stack | 管理任务| 隶属关系标签

于 2011-03-09T15:16:27.750 回答
1

尝试将 android:launchMode="singleInstance" 用于 AndroidManifest.xml 中的应用程序活动

于 2011-03-08T16:21:01.043 回答