首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在以相同目的重新启动活动时重复处理

如何避免在以相同目的重新启动活动时重复处理
EN

Stack Overflow用户
提问于 2013-03-27 00:45:46
回答 1查看 778关注 0票数 3

我们的活动可以从GCM通知中启动。我们在GCM意图中设置额外的内容,以确保用户被带到消息线程中,用于GCM通知,然后我们调用removeExtra将其从意图中删除。

如果用户从最近的历史菜单中启动我们的应用程序,那么该活动的启动意图与上一次启动时的意图相同(例如,从GCM通知)。

这种情况很容易检测到:

代码语言:javascript
复制
    Intent i = getIntent();

    // If the caller intent is from the recent apps and has the RECIPIENT_ID_KEY
    // extra we should remove it to avoid open the messages thread again
    if (((i.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) &&
             i.hasExtra(MyConstants.RECIPIENT_ID_KEY)) {
        i.removeExtra(MyConstants.RECIPIENT_ID_KEY);
    }

但是,如果该活动已被操作系统破坏,我们也希望它能够工作。目前,当设置了开发人员选项“不保留活动”(仅在OS 4.0+上可用)时,当从另一个屏幕按后退按钮时,该活动将继续以相同的目的重新创建,从而导致错误的事情发生。

我考虑在GCM意图中添加一个唯一的附加项,并在处理完之后将其保存在共享首选项中。然而,当通过SEND image/jpg意图将图像共享到应用程序中时,我们也需要这样做。我们不能控制这个意图,所以我们怎么知道我们是否已经处理过了呢?我想我们可以使用文件/URI信息,尽管这意味着如果用户连续两次共享相同的图像,我们将忽略第二个映像。

有没有一种干净而简单的方法来解决这个问题?

我们目前支持OS 2.3+,我们的应用程序可以在世界各地使用。以下是我的AndroidManifest.xml的相关部分:

代码语言:javascript
复制
    <activity
        android:name=".ui.MyClass"
        android:configChanges="orientation|screenSize"
        android:launchMode="singleTop"
        android:windowSoftInputMode="stateHidden" >
EN

回答 1

Stack Overflow用户

发布于 2017-08-30 23:58:47

我对如何解决这个问题很感兴趣:

然而,当通过发送图像/jpg意图将图像共享到我们的应用程序中时,我们也需要这样做。

一旦我处理这些图像,我就会在意图上添加一个额外的标志。正如您可以想象的那样,在进行文件处理之前,我会检查该标志。即使这个意图是由另一个应用程序创建的,这也是有效的。

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

https://stackoverflow.com/questions/15650090

复制
相关文章

相似问题

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