Facebook for Android应用程序的主屏幕小部件如何工作?

时间:2010-02-05 17:03:29

标签: android facebook

实际上,此问题适用于需要远程服务器数据的任何窗口小部件。

答案是纯粹的猜测,但您认为小部件如何获取其数据?对于那些不知道的人,小部件会显示朋友最新状态更新的历史记录。

我能想到的一些答案:

  1. 小部件直接轮询API
  2. 小部件从某些人那里抓取数据 正在运行的服务 背景,轮询服务器
  3. 不知何故Facebook实施推进 我认为不存在的Android
  4. 小部件以某种方式检测到 用户正在使用屏幕并抓取 按需提供的数据

4 个答案:

答案 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,但不一定必须与服务下载数据的频率相同。我定期刷新的大多数应用程序都有一个设置来控制刷新频率,我想这将是服务的设置。