Service确实是运行在主线程里的,也就是说如果你在Service里编写了非常耗时的代码,程序必定有问题。
Android的后台就是指,它的运行是完全不依赖UI的。即使Activity被销毁,或者程序被关闭,只要进程还在,Service就可以继续运行。
一个进程里面,主线程有Activity+Service,比如有时我们会手动关掉Activity,带Service还在后台运行着,跟服务器连接。
耗时的任务只要在Service再创建一个进程就好了
为什么不用Thread。
1、Activity很难对Thread进行控制,当Activity被销毁之后,就没有任何其它的办法可以再重新获取到之前创建的子线程的实例。
2、如果没有在Activity的OnDestory里面设置stopThread=true,那Activity销毁之后,线程还在,控制不了。
3、在一个Activity中创建的子线程,另一个Activity无法对其进行操作。
4、所有的Activity都可以与Service进行关联。
5、即使Activity被销毁了,之后只要重新与Service建立关联,就又能够获取到原有的Service中Binder的实例。
6、使用Service来处理后台任务,Activity就可以放心地finish,完全不需要担心无法对后台任务进行控制的情况。
所以这种定时要和服务器交互的情况下,是不是服务更好一些?