Android Service完全解析与实际运用

来源:互联网 发布:物流线路规划软件 编辑:程序博客网 时间:2024/06/11 09:45

在这一章中我们介绍Android中Service的用法,让大家都能用Serveice

你将了解:

  • 为什么在Service中创建子线程而不是Activity中
  • Service的两种启动方法有什么区别
  • IntentService的使用场景与特点

一、为什么在Service中创建子线程而不是Activity中

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

二、Service的两种启动方法有什么区别

  • 在Context中通过public boolean bindService(Intent service,ServiceConnection conn,int flags)方法来进行Service与Context的关联并启动,并且Service的生命周期依附于Context(不求同时同分同秒生,但求同时同分同秒死)
  • 通过public ComponentName startService(Intent service)方法去启动一个Service,此时Service的生命周期与启动它的Context无关。

注意:
都需要在xml里注册你的Service,就像这样:

<service        android:name=".packnameName.youServiceName"        android:enabled="true" />

三、IntentService的使用场景与特点

其是Service的子类,异步会自动停止的服务,处理完耗时操作自动停止并销毁服务

优点:

  • 不需手动new Thread 本身就异步嘛。
  • 不需考虑什么时候关闭,自动关闭嘛

onStartCommand中回调了onStart,onStart中通过mServiceHandler发送消息到该handler的handleMessage中去。最后handleMessage中回调onHandleIntent(intent)。

原创粉丝点击