Android service与thread的选择

来源:互联网 发布:mac强制卸载软件 编辑:程序博客网 时间:2024/06/03 15:59

android SDK:

service运行在宿主进程中的主线程中(即UI线程),不创建自己的线程,不运行在一个单独的进程中(除非你专门指定)。

因此,如果你的service要做的工作很占CPU或者会有阻塞(例如mp3播放、网络任务),最好在service中创建一个新的thread来做这些工作,这样主线程能够专注于activity的用户交互,从而减少ANR(程序无响应)异常的发生。


 到底该用service还是用thread?

如果任务只在应用程序与用户有交互的情况下产生,并且任务很占时间或者会引起阻塞,则另起thread或者HandlerThread。

如果在应用程序与用户无交互的情况下仍需处理任务,那么用service,因为service是在后台运行的,同时仍要注意是否需要在service中另开thread。

Context.startService()方式启动的service会先后调用onCreate()、onStart()方法,这种方式启动的service不会与调用者有任何关系,即使调用者退出了,service仍然继续运行。

Context.bindService()方式启动的service会先后调用onCreate()、onBind()方法,调用者与服务绑定在一起,调用者一旦退出,服务立即终止。


原创粉丝点击