这里有点让我困惑的问题:
我有一个主屏幕小部件,单击它会启动我的主应用程序 Activity,并在 Intent 中添加一些额外内容:
Intent start = new Intent(context, Main.class);
start.putExtra("action", "showXYZ");
start.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(start);
一切正常,它启动了我的 Activity ,并且我的 Activity 收到了预期的额外费用。它处理这些额外内容并启动另一个 Activity 。
一旦用户点击主屏幕小部件并以这种方式启动主 Activity ,通过“最近的应用程序”方法(按住“主页”键)进入应用程序将启动带有附加功能的主 Activity - 导致我不希望发生的处理(并导致第二个 Activity 打开,而不是仅显示主要 Activity )。
有什么解决方法吗?从“最近的应用程序”方法启动应用程序时,我想简单地启动 Main Activity ,而无需最后一组额外内容。
非常感谢您的帮助! r3mo
注意:我是安卓1.5
编辑:
在这里找到了解决方法: Android keeps caching my intents Extras, how to declare a pending intent that keeps fresh extras?
我将为小部件触发的 Intent 添加时间戳,并检查 Main.java 中的时间戳是否最新。如果是,我将继续处理。如果没有,我将只显示 Main.java Activity 。
很想知道是否有任何官方解决方案。
最佳答案
正如 Martijn 所说,您可以使用设置了标志 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
的 Intent 检查您的应用程序是否打开,如下所示:
int flags = getActivity().getIntent().getFlags();
if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
// The activity was launched from history
}
关于Android:从 'recent applications' 开始应用程序以 Intent 中使用的最后一组额外内容启动它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866149/