Android 服务与简单 class 具有用于网络访问的线程

Android Service vs Simple class with thread for network access

关于如何解决我的网络访问问题,我很为难。

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

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

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

一个简单的 Java class 将是直接而简单的解决方案,但我觉得服务可能是正确的方法。我真正关心使用 Service 的是使用它的样板代码,即与 Activity.

通信的活页夹或消息传递

对于这个问题,正确的解决方法是什么?在这种情况下,服务是否也提供了一些额外的优势?

在我看来,使用 Java 多线程机制可能比 Android 为轻量级短任务服务更好。

据我所知,Google 推荐使用 Services 来处理长时间和连续的任务。 (例如文件看门狗、基于网络的更新代理)

我自己通常使用以下模式进行多线程任务。

// 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();

还有一些注意事项:

  • 服务 运行 在 main 线程上。
  • 服务不会在任务完成后结束。