Android:从服务器获取数据的最佳方式(Widget +应用程序)

时间:2011-05-16 12:47:04

标签: android android-service android-asynctask

我正在开发一个Android应用程序,我需要从服务器获取数据(新闻项)。我知道怎么做,使用线程和/或AsyncTasks等,但因为我也需要小部件中的数据,并且因为我想知道一般的首选方式,我想我会问你们。

我想到了一些具体的实现,即;

1)基本上创建一个使用Threads来获取数据的类,我从我的正常活动和Widget中访问这些数据。也许缓存信息供以后使用。

2)使用服务,我可以从我的小部件和应用程序中请求数据。此服务不需要一直运行,但可以在需要数据时启动,并在获取和返回数据时停止。可以定期启动此服务以更新Widget的数据,或类似的内容。

有很多方法可以解决这个问题,所以我很想听听你认为这个问题的好办法。

提前致谢, 埃里克

2 个答案:

答案 0 :(得分:2)

您可以使用服务从服务器获取数据,然后将其保存在数据库中。当有新信息可用时,您的服务可以发送您的app / widget可以注册的广播,并自行刷新。

由于服务不需要一直运行,因此您可以使用IntentService

  

IntentService是一个基类   处理异步的服务   请求(表示为Intents)   需求。客户端通过发送请求   startService(Intent)调用;该   服务根据需要启动,处理   每个Intent轮流使用一个worker   线程,并在运行时自行停止   失业了。

如果您定期更新,那么在每次更新后,您的服务可以安排自己使用AlarmManager由Android系统再次运行。

  

警报管理器适用于   您希望拥有自己的案例   应用程序代码运行在特定的   时间,即使你的申请没有   目前正在运行。

答案 1 :(得分:0)

您可能希望在窗口小部件自行更新时启动服务(updatePeriodMillis),并使用它来获取数据,将其存储在sqldatabase中以及刷新窗口小部件。

这样就可以缓存数据,您可以从应用程序访问它,而不必过于复杂。