从Widget启动Activity首先会停止应用程序启动相同的活动

时间:2011-07-13 21:04:06

标签: android widget

我的Android应用中有一种非常奇怪的行为。这是发生的事情:

如果我“启动”应用程序(单击其图标)并通过startActivity(Intent)启动活动,它可以正常工作。如果我然后添加一个小部件并单击它以通过setOnClickPendingIntent()启动相同的意图,它也可以正常工作。

现在,如果我点击后退按钮直到应用程序“关闭”(即我回到主屏幕)并点击小部件,则活动显示正常。但是,当我尝试从应用程序中启动相同的活动/意图时,它不再起作用。活动未启动,我仍然在同一个屏幕上。我调试了代码,并且调用了startActivity(Intent)方法,就像之前一样(完全执行相同的代码)。

如果我回到主屏幕并再次“启动”应用程序(点击其图标),一切都恢复正常。

关于可能导致问题的任何想法。

手机是Android 2.3.3。该应用程序是针对Android 2.1-update1(API级别7)构建的。

1 个答案:

答案 0 :(得分:1)

我发现了问题所在。

Widget通过设置标志 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

来启动意图

在我的列表视图活动中,我使用相同的标志来启动意图

Intent intent = new Intent("x.y.NEWS_DETAIL");
intent.putExtra(NewsConstants.ISSUE_ID, newsId);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);

出于某种原因,当该活动已经在历史记录中时,请求具有FLAG_ACTIVITY_NEW_TASK的活动阻止它显示。我通过删除标志并从当前上下文而不是应用程序上下文启动intent来修复代码:

 Intent intent = new Intent("x.y.NEWS_DETAIL");
 intent.putExtra(NewsConstants.ISSUE_ID, newsId);
 startActivity(intent);

我现在必须知道该标志对PendingIntent的影响是什么,是否应该与Widgets一起使用。