Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android服务与简单类的网络访问线程_Android_Multithreading_Android Service - Fatal编程技术网

Android服务与简单类的网络访问线程

Android服务与简单类的网络访问线程,android,multithreading,android-service,Android,Multithreading,Android Service,关于如何解决我的网络接入问题,我陷入了两难的境地 我所有基于REST的请求都通过我自己的HttpRequestExecutor类路由,该类将异步执行每个请求,结果将通过每个请求传递给它的处理程序发送回 其中一些请求是从UI发起的,也需要在UI结束,例如登录请求。在大多数情况下,用户必须等到它完成。我想为每个用例编写一些高级和专门的类,因为它可以在执行请求之前和/或之后进行一些业务级别的处理。结果将传递给发起活动 这可以使用服务或简单的Java类来完成,两者都使用线程。我不知道该走哪条路 一个简单

关于如何解决我的网络接入问题,我陷入了两难的境地

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

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

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

一个简单的Java类将是直截了当的简单解决方案,但我觉得服务可能是正确的方法。我真正关心的是使用服务时使用的锅炉板代码,即活页夹或消息传递与活动进行通信


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

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

据我所知,谷歌建议在长时间连续的任务中使用服务。(例如,文件看门狗、基于网络的更新代理)

我自己通常在多线程任务中使用以下模式

// 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();
还有一些注意事项:

  • 服务在主线程上运行
  • 服务的任务完成后不会立即完成

Im android新手,服务是按照您所说的在主线程上运行,还是在调用它们的线程上运行?