A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯盼 中级黑马   /  2012-12-4 12:36  /  1363 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、startService()生命周期
第一次执行onCreate()-->onStartCommand()->onDestroy()
第二次执行onStartCommand()-->onDestroy()
二、编写类继承Service或其子类
  复写方法
   先onCreate() 再onStartCommand() onBind()  onDestroy()

三、BoundService生命周期
onCreate()-->onBind()-->onUnbind()-->onDestroy()

四、BoundService
BoundService允许其他的组件(比如Activities)绑定到这个Service上,可以发送请求,也可以接受请求,甚至进行进程间的童话.BoundService仅仅在服务于其他组件时存在,不能独自无限期的在后台运行.

五、创建BoundService
   当创建一个能提供绑定功能的服务时,我们必须提供一个IBinder对象,客户端能使用这个对象与服务进行交互。在Android中有三种方式定义方式:
1.扩展Binder类
2.使用Messenger
3.使用AIDL(Android Interface Definition Language)

六、通过扩展Binder类创建BondService步骤:
a.在Service类中,创建一个Binder实例,包含客户端能调用的公共方法,返回当前服务对象.
b.在onBind()方法中返回Binder实例
c.在客户端,从onServiceConnected()方法中获得Binder实例,




七、onStartCommand的三个返回值意义
START_STICKY:当服务进行在运行时被杀死,系统将会把它值为started状态,但是并不保存期传递的Intent对象

START_NOT_STICKY:当服务进行在运行时被杀死,并且没有新Intent对象传递过来,系统将会把它值为started状态,但是并不会再次创建进程,直到startService(Intent)方法被调用.

START_REDELIVER_INTENT:当服务进行在运行时被杀死,它将会间隔一段时间后重新被创建,并且最后一个传递的Intent对象将会再次传递过来.

八、IntentService使用
  IntentService是Service类的子类,用来处理异步请求。客户端通过startservice(Intent)方法传递请求给IntentService,IntentService通过worker thread处理每个Intent对象,执行完所有工作之后自动停止Service。
a.写构造方法
b.复写onHandleIntent方法

九、IntentService执行如下操作
a.创建一个与应用程序主线程分开worker thread用来处理所有通过传过来的Intent请求.
b.创建一个worker queue,一次只传递一个intent到onHandleIntent()方法中,从而不用担心多线程带来的问题
c.当处理完所有请求后自动停止服务,而不需要我们自己调用stopSelf方法.
d.默认实现了onBind()方法,这个方法将会把我们的intent放到work queue中,然后在onHandleIntent()中执行.

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马