暂停时更新服务中的活动数据

Sna*_*ake 2 android android-contentprovider android-lifecycle android-sqlite

假设我有一个有数据对象的活动.它根据该对象更新其gui组件.现在让我们说它被暂停(OnPause被调用)但没有停止或破坏

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

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

在这种情况下我该怎么办?

Y.S*_*Y.S 6

执行此操作的难以正确的方法是ContentProvider为您的应用构建自己的自定义,并更新从Web服务收到的所有数据并将通知推送到此ContentProvider.当Activity回到前台时,它会使用由提供的新数据更新自己ContentProvider.

很难,因为制作一个习惯ContentProvider是很多工作.这是正确的方法,因为它符合移动应用程序和Android架构的行为:比如用户激活网络服务或一些计算密集型任务,然后解散应用程序; 或者说推送通知到达并要求更新和显示应用程序的数据.在这两种情况下,应用程序Activity可能不再位于前台,但Service可以使用a来执行某些非UI操作.现在在该操作结束时,Service通过更改数据ContentProvider,当用户再次激活应用程序时,Activitys从中获取新数据ContentProvider.

引用官方教程:

内容提供程序是将一个进程中的数据与另一个进程中运行的代码连接起来的标准接口.

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

谷歌自己的应用程序使用自定义ContentProvider.该Gmail应用程序特别利用它ContentProvider在网络连接可用时获取新电子邮件并离线显示电子邮件.的Facebook,WhatsAppTwitterAndroid应用程序也使用ContentProvider秒.