我有一个适用于 android 4.0(android:minSdkVersion="14") 的应用程序,其中包含许多需要从我的服务器下载(而不是删除或发送)新数据的 SQLite 表。目前用户有一个同步按钮,但是我想实现一些在 3G/Wifi 开启时每隔 1-2 小时自动同步的东西。
我应该使用什么模式或最佳实践?警报事物,本地服务,远程服务还是其他?
我有一个适用于 android 4.0(android:minSdkVersion="14") 的应用程序,其中包含许多需要从我的服务器下载(而不是删除或发送)新数据的 SQLite 表。目前用户有一个同步按钮,但是我想实现一些在 3G/Wifi 开启时每隔 1-2 小时自动同步的东西。
我应该使用什么模式或最佳实践?警报事物,本地服务,远程服务还是其他?
你需要两件事:
确保您的代码在他自己的线程中运行,您不想在广播接收器中执行任何繁重的操作。运行此类代码的好地方是具有自己独立线程的服务。
使用服务和广播接收器(对于 wifi 状态,如上所述)。请记住,就电池使用而言,每 X 次轮询 Web 服务器是一种非常糟糕的体验。尝试构建 GCM Web 服务。
我建议您阅读Android Pro 4的第 19 章(http://my.safaribooksonline.com/book/programming/android/9781430239307/chapter-19-broadcast-receivers-and-long-running-services/navpoint-164)然后使用这里已经准备好的源代码http://www.androidbook.com/akc/filestorage/satya/documentfiles/3810/ProAndroid4_Ch19_TestReceivers.zip
我通过使用Alarm + ALongRunningReceiver(=Broadcast Receiver) + ALongRunningNonStickyBroadcastService(Local Service) + LightedGreenRoom(Handles CPU partial_wake 所以它不会睡着) 做到了这一点。