我的Android应用中有一种非常奇怪的行为。这是发生的事情:
如果我“启动”应用程序(单击其图标)并通过startActivity(Intent)启动活动,它可以正常工作。如果我然后添加一个小部件并单击它以通过setOnClickPendingIntent()启动相同的意图,它也可以正常工作。
现在,如果我点击后退按钮直到应用程序“关闭”(即我回到主屏幕)并点击小部件,则活动显示正常。但是,当我尝试从应用程序中启动相同的活动/意图时,它不再起作用。活动未启动,我仍然在同一个屏幕上。我调试了代码,并且调用了startActivity(Intent)方法,就像之前一样(完全执行相同的代码)。
如果我回到主屏幕并再次“启动”应用程序(点击其图标),一切都恢复正常。
关于可能导致问题的任何想法。
手机是Android 2.3.3。该应用程序是针对Android 2.1-update1(API级别7)构建的。
答案 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一起使用。