假设我有一个包含数据对象的活动。它根据该对象更新其 GUI 组件。现在假设它已暂停(调用 OnPause)但未停止或销毁
同时,收到推送通知(intentservice 已启动),我需要使用推送通知对象更新该对象,以便在应用程序恢复时更新 gui。
我考虑过向活动发送广播,以便它可以更新其数据对象,但我在某处读到,当活动暂停时,不会收到广播。
这种情况我该怎么办?
做到这一点的困难但正确的方法是构建您自己的自定义ContentProvider
为您的应用程序更新从网络服务收到的所有数据并将通知推送到此ContentProvider
。当。。。的时候Activity
返回前台,它使用由提供的新数据进行自我更新ContentProvider
.
It is hard因为定制ContentProvider
工作量很大。它是correct方式,因为它符合移动应用程序的行为和 Android 架构:假设用户激活 Web 服务或某些计算密集型任务,然后关闭应用程序;或者说推送通知到达并要求更新和显示应用程序的数据。在这两种情况下,应用程序的Activity
s 可能不再位于前台,但是Service
可用于执行一些非 UI 操作。现在,在该操作结束时,Service
通过以下方式更改数据ContentProvider
,当用户再次激活应用程序时,Activity
s 从以下位置获取新数据ContentProvider
.
引用官方教程 http://developer.android.com/guide/topics/providers/content-providers.html:
内容提供者是将数据连接到一个标准接口
进程中的代码在另一个进程中运行。
作为开发人员,您应该始终假设用户可以随时调用应用程序并随时关闭它。无论是否Activity
无论是否在前台,应用程序的数据都需要正确更新和维护。
谷歌自己的应用程序使用自定义ContentProvider
s. The Gmail
应用程序特别利用其ContentProvider
当网络连接可用时获取新电子邮件并离线显示电子邮件。这Facebook
, WhatsApp
& Twitter
Android 应用程序还利用ContentProvider
s.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)