Android Service vs Simple类,带有用于网络访问的线程

时间:2015-06-13 10:00:42

标签: android multithreading android-service

如何解决有关网络访问的问题,我处于相当困境。

我的所有基于REST的请求都通过我自己的HttpRequestExecutor类进行路由,该类将异步执行每个请求,结果将通过每个请求传递给它的处理程序发回。

其中一些请求来自UI,并且需要在那里结束,例如登录请求。在大多数情况下,用户必须等到它完成。我想为每个这样的用例编写一些高级和专用类,因为它可以在执行请求之前和/或之后执行一些业务级别处理。结果将传递给原始活动。

这可以使用服务或使用线程的简单Java类来完成。我不知道该走哪条路。

一个简单的Java类将是直接和简单的解决方案,但我觉得服务可能是正确的方法。我真正关心使用Service的是使用它的锅炉板代码,即绑定器或消息来与Activity通信。

对于这个问题,这是正确的解决方法吗?在这种情况下,服务还提供了一些额外的好处吗?

1 个答案:

答案 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();

还有一些注意事项:

  • 服务在主题上运行。
  • 任务完成后,服务无法完成。