Service与Activity的关系

我们知道,Service是一个后台的概念,但是是运行在主线程里的,也就是说如果你在Service里编写了非常耗时的代码,程序必定会出现ANR的。同时,我们也知道,Activity也是运行在主线程里的。所以有时我们会很纳闷,Service会不会阻塞主线程的运行?会觉得创建Service是不是多此一举?

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

这就是为什么要在主线程中创建Service了。


你可能感兴趣的:(Android)