假设我想在每30秒查询一次Web API的Android设备上创建一个服务(注意:小写 - 我并不暗示android.app.Service),并为订阅的Activity提供任何更新。我只期待一项活动将订阅此服务。我应该
在线示例的网址也会受到赞赏。
答案 0 :(得分:1)
使用IntentService
类/模式。在您的活动上创建一个onHandleIntent
,您的android.app.Service
实例也会回调,并且您已完成设置。它的轻量级和Android将负责大部分的内务管理。
http://developer.android.com/reference/android/app/IntentService.html
答案 1 :(得分:1)
永远不要指望您的活动保持活力
除了短期卸载工作外,您的活动不应启动线程。系统可能始终暂停活动。因此,您可能不依赖于某项活动来继续运行。
这几乎意味着一个线程是不行的。另请注意,Thread.sleep没有准确性。它可能会熄火并且太早或太晚唤醒。请参阅android:java.lang.Thread.sleep documentation
Causes the thread which sent this message to sleep
for the given interval of time (given in milliseconds).
The precision is not guaranteed - the Thread may sleep
more or less than requested.
这两个事实几乎破坏了基于线程的想法。我强烈建议您查看android服务基础架构。
答案 2 :(得分:0)
我认为AsyncTask
可以为您完成所有工作。您有一个doInBackgroud
方法,您可以在onPostExecute
中查询API并发送流程消息(如果需要和更新)。在那里,您可以开始新的AsyncTask
。
答案 3 :(得分:0)
我回答过this关于服务的问题。您可以将AsyncTask绑定到服务中以处理Web查询