首页 > 程序开发 > 移动开发 > 其他 >

Andriod Service与Thread的区别

2017-04-21

Andriod Service与Thread的区别,首先,我们需要明确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();

}

}

相关文章
最新文章
热点推荐