欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Andriod Service与Thread的区别介绍

程序员文章站 2022-06-20 13:10:43
首先,我们需要明确service是运行在主线程的,不能有耗时操作,这样,在service中处理耗时操作的时候,我们依然需要使用线程来处理。 既然在service里也要创建...

首先,我们需要明确service是运行在主线程的,不能有耗时操作,这样,在service中处理耗时操作的时候,我们依然需要使用线程来处理。

既然在service里也要创建一个子线程,那为什么不直接在activity里创建呢?

这是因为activity很难对thread进行控制,当activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例。而且在一个activity中创建的子线程,另一个activity无法对其进行操作。但是service就不同了,所有的activity都可以与service进行关联,然后可以很方便地操作其中的方法,即使activity被销毁了,之后只要重新与service建立关联,就又能够获取到原有的service中binder的实例。因此,使用service来处理后台任务,activity就可以放心地finish,完全不需要担心无法对后台任务进行控制的情况。

标准service的写法:

@override
public int onstartcommand(intent intent, int flags, int startid) {
new thread(new runnable() {
@override
public void run() {
// 开始执行后台任务
}
}).start();
return super.onstartcommand(intent, flags, startid);
}
class mybinder extends binder {
public void startdownload() {
new thread(new runnable() {
@override
public void run() {
// 执行具体的下载任务
}
}).start();
}
}

 以上所述是小编给大家介绍的andriod service与thread的区别介绍,希望对大家有所帮助