服务暂停时更新活动数据

2024-03-04

假设我有一个包含数据对象的活动。它根据该对象更新其 GUI 组件。现在假设它已暂停(调用 OnPause)但未停止或销毁

同时,收到推送通知(intentservice 已启动),我需要使用推送通知对象更新该对象,以便在应用程序恢复时更新 gui。

我考虑过向活动发送广播,以便它可以更新其数据对象,但我在某处读到,当活动暂停时,不会收到广播。

这种情况我该怎么办?


做到这一点的困难但正确的方法是构建您自己的自定义ContentProvider为您的应用程序更新从网络服务收到的所有数据并将通知推送到此ContentProvider。当。。。的时候Activity返回前台,它使用由提供的新数据进行自我更新ContentProvider.

It is hard因为定制ContentProvider工作量很大。它是correct方式,因为它符合移动应用程序的行为和 Android 架构:假设用户激活 Web 服务或某些计算密集型任务,然后关闭应用程序;或者说推送通知到达并要求更新和显示应用程序的数据。在这两种情况下,应用程序的Activitys 可能不再位于前台,但是Service可用于执行一些非 UI 操作。现在,在该操作结束时,Service通过以下方式更改数据ContentProvider,当用户再次激活应用程序时,Activitys 从以下位置获取新数据ContentProvider.

引用官方教程 http://developer.android.com/guide/topics/providers/content-providers.html:

内容提供者是将数据连接到一个标准接口 进程中的代码在另一个进程中运行。

作为开发人员,您应该始终假设用户可以随时调用应用程序并随时关闭它。无论是否Activity无论是否在前台,应用程序的数据都需要正确更新和维护。

谷歌自己的应用程序使用自定义ContentProviders. The Gmail应用程序特别利用其ContentProvider当网络连接可用时获取新电子邮件并离线显示电子邮件。这Facebook, WhatsApp & TwitterAndroid 应用程序还利用ContentProviders.

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

服务暂停时更新活动数据 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 在包“android”中找不到属性“backgroundTint”的资源标识符

    我发现了一些视图 xml 属性 例如backgroundTint backgroundTintMode 但是当我使用它作为视图属性定义时 Eclipse 显示错误 No resource identifier found for attri
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 在 Android Studio 中,为什么我必须在模拟器中单击“运行应用程序”两次才能启动应用程序?

    在 Android Studio 中 当我按播放按钮在 Android 模拟器上安装并运行应用程序时 大约 5 10 秒后 我在屏幕底部收到一条消息 显示 安装成功 但应用程序实际上并未运行在模拟器上 我必须再次按下播放按钮 这是非常令人沮
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 注销 Django Rest Framework JWT

    我想问一下 当我使用 JWT 时注销是否是一个好主意 要登录 我发送一个带有用户名和密码的发布请求 以获取所需的令牌 保存到 localStorage 中 当然 这将允许我向需要令牌的视图发送进一步的请求 但我不确定应该如何注销用户 我可以
  • 如何写入 OSX 系统钥匙串?

    作为在 OSX 中使用 Cocoa 以编程方式创建 VPN 连接的过程的一部分 我需要将 PPP 密码存储在系统钥匙串中 当我尝试使用钥匙串 API 执行此操作时 由于调用 SecKeychainAddGenericPassword 出现以
  • 在另一个 Div 内对齐 Div

    You can visit the site I am working on here https web archive org web 20140304201224 http www thomashall idesignclass co
  • swift 2 中排序和 sortInPlace 之间的区别?

    我一直在尝试快速使用 sortInPlace 函数 但它不起作用 当我使用排序函数而不是 sortinplace 时 它 可以工作 请解释一下这两个函数之间的区别 如果您可以提供演示这两个函数的使用的小代码示例 那将非常有帮助 var mu
  • jsPDF addHTML 将低质量图像导出为 PDF

    最近两天搜索的简单问题但没有找到解决方案 我正在使用 jsPDF 的 addHTML api 将 html 转换为 pdf loadPdf on click function var pdf new jsPDF p in a4 pdf ad
  • 使用 ShinyFiles 加载数据文件

    我的 Shiny 应用程序应该加载几个数据文件 为了实现这一目标 我尝试使用ShinyFiles package https github com thomasp85 shinyFiles From ui R shinyFilesButto
  • 包中的 Cython Pickling“未找到”错误

    我在腌制 Cython 类时遇到问题 但仅当它在包内定义时才有效 这个问题被注意到了以前在线 https groups google com forum msg cython users efRRFJVuZh8 x2 R8qHBlCkJ 但
  • 如何在Python中将光标重置到同一行的开头

    SO 中与此主题相关的大多数问题如下 如何在不引入的情况下在同一行打印一些信息 新队 Q1 https stackoverflow com questions 3249524 Q2 https stackoverflow com quest
  • ZF2 文件上传集合

    我无法让我的文件上传集合正常工作 这就是我所做的 https gist github com manuakasam 1ac71daf7269616f55f0 https gist github com manuakasam 1ac71daf
  • Spring websocket - 如何获取会话数

    我在用着this https spring io guides gs messaging stomp websocket 教程 我试图弄清楚如何获取当前会话的数量 我的 WebSocketConfig 如下所示 从教程中复制并粘贴 Conf
  • Spring Boot JacksonTester 自定义序列化器未注册

    尝试运行 Jackson 库来完成一些即将进行的工作 我有以下测试模型 地址 java package com example domain import java time LocalDate import org apache comm
  • 两个值之间的百分比差异

    我使用以下简单的 JavaScript 代码来计算两个值之间的百分比差异 subOBS001 vars obs001acount vars obs001asent divOBS001 subOBS001 vars obs001asent m
  • 在批准之前测试 Facebook 集成

    我想测试一个正在开发的移动应用程序 它将使用 Facebook API 来登录用户并读取共同的好友信息 然而 据我所知 除非应用程序经过验证 否则我无法使用 API 登录用户 但为了验证应用程序 审核团队将 需要测试和验证 我的 Faceb
  • Android Studio - 模拟器:进程已完成,退出代码 -1073741819 (0xC0000005)

    每当我尝试使用模拟器运行 Android 应用程序时 都会出现错误消息 模拟器 进程已完成 退出代码 1073741819 0xC0000005 随着 模拟器 无法初始化模拟帧缓冲区 有什么解决办法吗 您应该擦除 avd 管理器中的数据并冷
  • 如何降级命令行工具 MacOS

    我遇到了动态链接器错误 clock gettime符号所以我按照这篇文章所说的做了通过 RVM 在 OS X 10 11 6 上安装 ruby 2 3 0 时缺少符号 https stackoverflow com questions 39
  • Mongoose 可选搜索查询参数?

    我有以下情况 我需要根据某些参数 如果存在 构建猫鼬查询 IE 如果这样的对象被传递 player nickname action capture 执行以下搜索 Entry find player obj player action obj
  • 如何使用贝塞尔曲线沿着路径制作图像动画

    My goal 沿着如下图所示的路径移动 动画图像 可能连接贝塞尔曲线 必须在 IE7 下工作 不要构建多个解决方案 我可以暂停 恢复移动图像 图像将沿着路径继续移动 重复 我考虑过什么 CANVAS IE7 8不支持 尚未测试explor
  • 如何将 JavaScript 变量插入包含 Jinja 标记的字符串中?

    我有一个 javascript 函数 它尝试动态地将锚标记插入到网页中 其 href 属性是 Flask 路由的 url 这个烧瓶路线接受一个参数username 我想设置username为 JavaScript 变量的值 我尝试过使用模板
  • 内存泄漏是否有可接受的限制?

    我刚刚开始在 C 中尝试 SDL 我认为定期检查内存泄漏可能是尽早养成的好习惯 考虑到这一点 我一直通过 Valgrind 运行我的 Hello world 程序来捕获任何泄漏 尽管我已经删除了除最基本的之外的所有内容SDL Init an
  • 服务暂停时更新活动数据

    假设我有一个包含数据对象的活动 它根据该对象更新其 GUI 组件 现在假设它已暂停 调用 OnPause 但未停止或销毁 同时 收到推送通知 intentservice 已启动 我需要使用推送通知对象更新该对象 以便在应用程序恢复时更新 g