我有一个非常常见的问题,但无法找到合适的解决方案/模式来解决它。我的应用程序有两种需要自动更新的数据:
如果用户未登录,则只下载并显示常规数据,如果用户已登录,则也会处理他/她的数据。
我需要定期从Web服务下载这些数据,从设备的启动开始(触发操作android.intent.action.BOOT_COMPLETED
后)。
由于我的应用程序可以移动到SD,我还需要注册android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE
操作。
问题1 :从API级别11(Honeycomb)all actions aren't sent to applications in a stopped state开始。我还没有完全理解这一点,这是否意味着如果我的应用程序刚刚安装并且从未打开过,那么我的应用程序就无法监听操作(如果我们计算更新时只有一次)?或者这是否意味着在每次系统重启后,只有在应用程序启动时才会触发操作?
问题2 :如果应用程序已移至SD,则SyncAdapter
将无法运行,因此我必须依赖常规BroadcastReceiver
- Service
- Alarm
- PendingIntent
策略。但是,我怎么能理解系统不会启动SyncAdapter
? (我已经在Account
)
AccountManager
你知道有哪个图书馆负责这一切吗?这似乎很奇怪,这不是一个常见的问题吗?
答案 0 :(得分:1)
Re:问题1 ,据我所知,应用不是"还活着#34;直到用户第一次显式运行它。然后它仍然会活着#34;直到日期结束,除非用户使用Android应用程序管理设置中的强制停止按钮明确停止它。然后他将不得不手动重新运行应用程序,以便能够接收广播和内容。