如何解决有关网络访问的问题,我处于相当困境。
我的所有基于REST的请求都通过我自己的HttpRequestExecutor类进行路由,该类将异步执行每个请求,结果将通过每个请求传递给它的处理程序发回。
其中一些请求来自UI,并且需要在那里结束,例如登录请求。在大多数情况下,用户必须等到它完成。我想为每个这样的用例编写一些高级和专用类,因为它可以在执行请求之前和/或之后执行一些业务级别处理。结果将传递给原始活动。
这可以使用服务或使用线程的简单Java类来完成。我不知道该走哪条路。
一个简单的Java类将是直接和简单的解决方案,但我觉得服务可能是正确的方法。我真正关心使用Service的是使用它的锅炉板代码,即绑定器或消息来与Activity通信。
对于这个问题,这是正确的解决方法吗?在这种情况下,服务还提供了一些额外的好处吗?
答案 0 :(得分:2)
在我看来,对于轻量级和短任务,使用Java多线程机制可能比Android服务更好。
据我所知,Google建议将服务用于长期和连续的任务。 (例如文件看门狗,基于网络的更新代理)
我自己通常使用以下模式进行多线程处理。
// Bind a handler to the main thread.
Handler handler = new Handler();
new Thread(new Runnable(){
@Override
public void run(){
// Do the task
// Inform main thread, e.g. calling callbacks
handler.post(new Runnable(){
@Override
public void run(){
// Inform task requester here
}
});
}
}).start();
还有一些注意事项: