在服务中的Thread或Thread内创建服务

时间:2014-08-02 08:08:31

标签: java android multithreading service

对于应该获取和更新新数据的网络作业,建议做什么?我在这个问题上看到了不同的答案。

要创建一个Service,该Thread将在新的Thread内运行,该Service应该完成所有网络工作或创建一个新的Thread,该{{1}}将在{{1}}内部启动{{1}} {{1}}?

5 个答案:

答案 0 :(得分:2)

您无法创建在线程内运行的服务,因此无法实现这种可能性。您需要一个Thread(或AsyncTask)来执行任何网络请求。如果您希望应用程序继续执行网络请求,即使当前活动已完成,那么您需要在服务中创建该线程(或AsyncTask)。

答案 1 :(得分:0)

在android中所有网络操作都要在一个线程内完成。即使您正在创建服务,所有网络操作也将在一个线程内完成。 线程内的服务是不可能的。

现在,如果您希望网络操作在多个活动中可用,则应创建服务,否则活动中的单独网络线程将完成此任务。

答案 2 :(得分:0)

IntentServiceonCreate中的主线程上初始化,否则在另一个线程中运行。在这种情况下无需处理额外的线程。 Service在主线程中运行,并要求您处理线程(如果需要)。最好对IntentService进行原型设定,因为您只是进行网络通话。如果网络通话很短,那么只需使用AsyncTask

答案 3 :(得分:0)

我认为你需要IntentService。无需在Thread内部的服务上混淆。在后台线程内启动服务或启动service with background thread。两者相同。

答案 4 :(得分:0)

最好在服务中调用线程而不是线程内的服务,因为服务是android的一个组件,因此它具有一些优先级。另一方面,Thread不是Android组件的一部分,因此与服务相比没有优先级。

因此,如果Android系统开始查杀应用程序时内存不足,它将首先杀死包含该服务的线程,因为它的优先级较低或没有优先级。如果您使用了包含服务的线程,那么您就是好的。希望它有所帮助:)