活动开启两次

2024-04-15

我有一个使用的应用程序城市飞艇 http://urbanairship.com/用于推送通知。当通知到达并且用户单击它时,我的应用程序中的活动 A 应该打开并执行某些操作。

我已经安装了BroadcastReceiver如图所示在文档中 http://docs.urbanairship.com/build/android_features.html#custom-handling-of-push-events,它是almost在职的。

  1. 当我的应用程序位于前台时,我根本不让用户看到通知,而只是自动处理它。
  2. 当我的应用程序根本没有运行时,活动就可以正常打开。
  3. 当我的应用程序处于后台时(当 A 是顶级 Activity 时总是会发生这种情况),创建了 Activity A 的第二个实例.

这当然是一个问题。我不想要两项 A 活动,我只想要其中一项。这是相关的BroadcastReceiver code:

@Override
public void onReceive(Context ctx, Intent intent)
{
    Log.i(tag, "Push notification received: " + intent.toString());
    String action = intent.getAction();
    int notificationId = intent.getIntExtra(PushManager.EXTRA_NOTIFICATION_ID, -1);
    if(action.equals(PushManager.ACTION_NOTIFICATION_OPENED))
    {
        Intent intentActivity = new Intent(ctx, ActivityA.class);
        intentActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        UAirship.shared().getApplicationContext().startActivity((intentActivity);
    }
}

更新: 我试图通过调用绕过这个错误System.exit(0)当用户在 Activity A 上按 Back 时。该过程结束,但随后立即重新启动!我的 BroadcastReceiver 在第二个实例中不会再次被调用。发生了什么?

更新2: @codeMagic 询问有关应用程序和活动 A 的更多信息。

该应用程序允许用户查看某些项目并对其发表评论。 Activity A 在应用程序启动时启动。如果用户的会话不再有效,则会启动登录活动。用户登录后,活动 A 再次激活。 A 只有一条“没有要查看的项目”消息和一个“立即尝试”按钮。

当用户登录时,每当有新项目可供查看时,服务器就会开始发送推送通知。当应用程序收到通知时,活动 A 访问服务器并获取下一个要查看的项目。该项目显示在活动 B 中。审核提交到服务器后,活动 B 完成,活动 A 再次成为顶级活动。

服务器知道用户何时正在审阅某个项目(因为活动 A 获取了该项目),并且在提交审阅之前不会发送推送通知 - 这意味着如果用户未登录或用户未登录,则不会发送通知正在查看活动 B.

虽然我同意这里存在微妙的竞争条件,但它并没有导致我所看到的问题 - 在测试中我 100% 肯定不存在竞争条件 - 仅发送推送通知after活动 A 再次变为活动状态。


解决方案是添加一个launchMode='singleTask'到活动AndroidManifest.xml。结果,不是新的活动,onNewIntent调用同一活动实例的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

活动开启两次 的相关文章

  • 单击弹出菜单时为什么导航栏出现在全屏应用程序中

    我有一个全屏应用程序 MainActivity java public class MainActivity extends AppCompatActivity TargetApi Build VERSION CODES KITKAT pr
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • android webview 函数 onPagefinished 被调用两次

    我的android webview功能onPageFinished被调用两次 我不知道为什么 但它在 android 2 2 上运行良好 但当我将其升级到 4 时 它就不起作用了 代码附在下面 Code Override public vo
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 如何查看 Android 上的 Wi-Fi 是否已连接?

    我什至不希望我的用户尝试下载某些内容 除非他们连接了 Wi Fi 然而 我似乎只能判断是否启用了 Wi Fi 但他们仍然可以有 3G 连接 android net wifi WifiManager m WifiManager getSyst
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • 无法获取 Facebook 传入请求

    我正在尝试在我的 Facebook android 游戏应用程序中实现发送数据并接受该数据 我正在关注https developers facebook com docs android send requests notification
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • java.lang.IllegalArgumentException:找不到片段的 id 0x1020002 (android:id/content) 的视图

    我正在尝试从一个片段移动到另一个片段 它在片段事务期间显示以下错误 java lang IllegalArgumentException No view found for id 0x1020002 android id content f
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • 在 Honeycomb Android 3.0 中显示 Action Bar 菜单项的图标

    我正在使用 Honeycomb android 3 0 开发 Android 应用程序 我正在尝试在 Action Bar 中显示菜单 菜单有一个图标和标题 当我们单击菜单项时 它会以下拉列表的形式显示其项目 它是下拉列表中带有项目名称但不
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp

随机推荐

  • 使用 PHP 格式化 API JSON 响应

    我有一个 api 我想使用 php 解析其中的数据 这就是回应 success true data medicineId 12 medicineName Abacavir medicineId 10 medicineName Alclome
  • python setuptools setup.cfg:在构建目录中包含主包和子包

    我想使用以下命令为我的 python 软件创建一个 pip 包安装程序 cfg https setuptools pypa io en latest userguide declarative config html文件 我的程序目前的结构
  • 如何在Delphi 10.2中使用ToolsAPI获取当前项目的版本号

    在 Delphi 2007 中 我可以使用以下 ToolsAPI 调用轻松获取当前项目的版本信息 procedure Test var ProjectOptions IOTAProjectOptions Project IOTAProjec
  • 我无法在 Netbeans 7.0 上创建 Rails 应用程序。挂在25%处

    我的开发环境 是 Win7旗舰版 红宝石 1 9 2p180 铁轨3 0 9 宝石1 8 5 sqlite3 和 mysql2 gems 已安装 我的IDE是netbeans 7 0 用于 netbeans 7 0 的 ruby 插件已安装
  • 在移动 Safari 中检测 iOS5(首选 JavaScript)

    iOS5 中引入的新固定定位损坏了我的网络应用程序 我需要一种方法来检测 iOS5 用户 如何检测iOS5 浏览器代理字符串是什么 首选 JavaScript 谢谢 从SO问题来看 iOS 5 用户代理字符串是什么 https stacko
  • 将 int 转换为 size_t

    当我传递一个时 我想知道 clang 编译器的以下警告integer to an std initializer list lt size t gt non constant expression cannot be narrowed fr
  • 使用boilerpipe提取非英文文章

    我正在尝试使用锅炉管 http code google com p boilerpipe java 库 用于从一组网站中提取新闻文章 它非常适合英文文本 但对于带有特殊字符的文本 例如带有重音符号的单词 hist ria 无法正确提取这些特
  • Firebase 按顺序获取数据

    我正在使用 Firebase 直到最近才按字母顺序获取数据时没有遇到任何问题 我从来没有使用过查询 我总是只使用数据快照并对其进行一一排序 最近 数据并不总是按字母顺序排列snapVal 如何才能获得按字母顺序排序的数据 snapVal 就
  • commonModalDialogClose(SP.UI.DialogResult.OK, someValue) 抛出错误

    在 SharePoint 2010 中 我有一个可视化 Web 部件 它使用SP UI ModalDialog showModalDialog 该对话框显示正常 但是当我尝试使用关闭对话框时 SP UI ModalDialog common
  • USBInterfaceOpen总是报kIOReturnExclusiveAccess错误

    最近我遇到了这个问题 很头疼 我已经在这个问题上花了一个星期了 但仍然失败 希望您能帮我把这块石头踢开 非常感谢 我的问题 我们公司为iPhone生产USB存储设备 实际上这个存储设备中有一个SDCard 现在 我们想要开发一个 Mac 应
  • li 菜单需要“selected”类

    当用户单击菜单选项卡时 我希望它保持选中状态 并带有白色按钮 这是我的尝试 但它不起作用 如果您单击主页按钮 它不会保持白色 html ul li a href span HOME span a li li a href en us abo
  • 带 redux 的进度条

    我的 React Redux 应用程序中有一个后台上传过程 更新非常频繁 我的减速器看起来像这样 export default function progressReducer state initialState action switc
  • struct - 使用 qsort 对 C 字符串进行排序

    我正在对一堆 IP 进行排序 但由于某种原因 它们的顺序错误 我不太确定问题出在哪里 66 249 71 3 190 148 164 245 207 46 232 182 190 148 164 245 190 148 164 245 20
  • Google 应用已发布到内部测试轨道,但无法找到/下载

    我已成功完成 APK 到内部测试轨道的发布过程 但是 当我尝试使用下面屏幕截图中的 在 GOOGLE PLAY 上查看 链接查看 Google Play 商店上下载的应用程序时 it opens a new window with the
  • 超链接在 Android UC 浏览器中不起作用

    我被一个问题困扰 我正在尝试通过放置在我的网站中的超链接打开 Android 应用程序 下面是链接 href intent Intent action com example myapp category android intent ca
  • 在 Objective-C 中,我可以在 c 浮点数组上声明 @property 吗?

    thing h interface Thing NSObject float stuff 30 property float stuff end thing m implementation Thing synthesize stuff e
  • 玩!没有正确关闭 H2

    我正在使用 Play 编写一个部署在 Tomcat 中的 Web 应用程序 因为应用程序不会处理太多数据 所以我将默认的 H2 数据库与 Hibernate 一起使用 当我想要部署新版本的应用程序时 我关闭 tomcat 擦除旧的 web
  • 如何使 bash 脚本与一个又一个命令一起工作?

    我有一个如下所示的 bash 脚本 首先 它将sorted bam 文件作为输入 并使用 stringtie 工具将每个样本gtf 作为输出 然后每个样本 gtf 的路径将被赋予到 mergelist txt 中 然后对它们使用 strin
  • 如何跟踪 celery 中的重试次数

    在 Celery 中 如何跟踪当前的重试 我知道我可以做这样的事情 app task bind True default retry delay 900 max retries 5 def send email self sender No
  • 活动开启两次

    我有一个使用的应用程序城市飞艇 http urbanairship com 用于推送通知 当通知到达并且用户单击它时 我的应用程序中的活动 A 应该打开并执行某些操作 我已经安装了BroadcastReceiver如图所示在文档中 http