实际上,此问题适用于需要远程服务器数据的任何窗口小部件。
答案是纯粹的猜测,但您认为小部件如何获取其数据?对于那些不知道的人,小部件会显示朋友最新状态更新的历史记录。
我能想到的一些答案:
答案 0 :(得分:2)
我会说#1或#2。最有可能出现#2,原因是jleedev在答案中给出的。
请注意,要实现app小部件,请扩展AppWidgetProvider,它是BroadcastReceiver。这只是一个在后台运行的类,并通过RemoteViews将更新推送到屏幕上的小部件。因此,您在主屏幕上看到的不是实际运行的Activity,它只是一个相当静态的视图,通过特殊的BroadcastReceiver定期更新。我说这一切都表明你的#1和#2之间没有太大区别,因为你编写的所有主屏应用程序小部件代码都在后台运行。
你也不能真正做到#4。遗憾的是,您无法检测到应用程序小部件何时在屏幕上。您当前可以做的最好的事情是安排警报来更新您的应用程序小部件,并使用该标志来防止这些警报在手机处于睡眠状态时触发。
答案 1 :(得分:1)
示例简单维基词典 AppWidget的Android SDK documentation refers。这将运行一项服务,定期从Internet中提取数据并将其推送回窗口小部件。完整的源代码是available。
文档says
如果您的App Widget设置过程可以 需要几秒钟(也许是 执行网络请求)和你 要求你的过程继续, 考虑在中启动服务 onUpdated()方法......如果你没有 这个每小时更新一次以上 可能不会造成重大影响 电池寿命问题。
答案 2 :(得分:0)
我编写的小部件运行一项服务,定期从互联网上提取数据并将其推送到小部件。这似乎运作良好。
答案 3 :(得分:0)
我会假设#2。活动和窗口小部件需要显示相同的内容,因此有一个服务可以下载和缓存数据。小部件在某个时间间隔内为defined to update,但不一定必须与服务下载数据的频率相同。我定期刷新的大多数应用程序都有一个设置来控制刷新频率,我想这将是服务的设置。