我正在开发一个Android应用程序,我需要从服务器获取数据(新闻项)。我知道怎么做,使用线程和/或AsyncTasks等,但因为我也需要小部件中的数据,并且因为我想知道一般的首选方式,我想我会问你们。
我想到了一些具体的实现,即;
1)基本上创建一个使用Threads来获取数据的类,我从我的正常活动和Widget中访问这些数据。也许缓存信息供以后使用。
2)使用服务,我可以从我的小部件和应用程序中请求数据。此服务不需要一直运行,但可以在需要数据时启动,并在获取和返回数据时停止。可以定期启动此服务以更新Widget的数据,或类似的内容。
有很多方法可以解决这个问题,所以我很想听听你认为这个问题的好办法。
提前致谢, 埃里克
答案 0 :(得分:2)
您可以使用服务从服务器获取数据,然后将其保存在数据库中。当有新信息可用时,您的服务可以发送您的app / widget可以注册的广播,并自行刷新。
由于服务不需要一直运行,因此您可以使用IntentService
。
IntentService是一个基类 处理异步的服务 请求(表示为Intents) 需求。客户端通过发送请求 startService(Intent)调用;该 服务根据需要启动,处理 每个Intent轮流使用一个worker 线程,并在运行时自行停止 失业了。
如果您定期更新,那么在每次更新后,您的服务可以安排自己使用AlarmManager
由Android系统再次运行。
警报管理器适用于 您希望拥有自己的案例 应用程序代码运行在特定的 时间,即使你的申请没有 目前正在运行。
答案 1 :(得分:0)
您可能希望在窗口小部件自行更新时启动服务(updatePeriodMillis),并使用它来获取数据,将其存储在sqldatabase中以及刷新窗口小部件。
这样就可以缓存数据,您可以从应用程序访问它,而不必过于复杂。