Android组件之Service

本文详细介绍了Android中的Service组件,包括其基本概念、使用方法、生命周期管理以及如何与Activity进行通信。特别讲解了IntentService的工作原理及Service与Activity之间的绑定过程。

Service就是没有界面的Activity。用法也就和Activity差不多 

需要复写onBind()必须实现的方法,onCreate()创建的时候,onStratCommand()启动的时候,onDestory()销毁的时候

有两种方式可以直接启动关闭Service。startService(intent),stopService(intent) ; 

bindService(),unbindService();

生命周期:也就有两种方式 onCreate(),onStart(),onDestory() //会一直运行直到stopService  或者在Service内部调用stopSelf()也会被销毁 比如说下载完成就后就会自己停掉。

onCreate(),onBind(),onUnbind(),onDestory();



IntentService:当需要处理多个Activity发来的请求时进行的操作,就是要被多次运行的Service。是以消息队列的形式一个有一个运行IntentService,运行完自动结束

没有onStartCommand()方法 没有onBind()方法

只需要复写onHandleIntent() 。这个是已经在线程中的内容,所以不用再重新搞线程。直接在里面写想写的代码就行


Service和Activity的通信(有一个绑定的过程),也就是上述的第二种运行情况。 onCreate(),onBind(),onUnbind(),onRebind,onDestory(); 

  实际开发中,我们会先定义一个类继承Binder,来实现自己的IBinder对象。然后生成这个对象,将这个对象在onBind中返回。这个对象用来返回各种在service中得数据。写方法 用的。

绑定的方式是

	Intent intent  = new Intent(this,Service.class);
	bindService(intent,connection,flags);//connection在下面,flags为0时,不会自动创建Service,为Context.BIND_AUTO_CREATE 为自动创建
	unbindService(connection);//解除绑定

在相对应的Activity中生成一个ServiceConnection对象 复写onServiceConnected(ComponentName:name,IBinder service)和onServiceDisconnected(ComponentName:Name)两个方法 当连接成功时,返回第一个,当连接断开时返回第二个 

其中IBinder就是我们在Service自己创建的Binder子类,从onBind()中来,这个需要类型强转。之后就可以用了。


接下来讲下从Activity怎么把数据再给予Service。在已经打开的过程中

Parcel parcel = Parcel.obtain();//功能类似于Message

parcel.writeInt();

parcel.writenString();

muBinder.transact(code,parcel,reply,flags);//code,只有两种情况,IBinder.LAST_CALL_TRANSACTION 或者IBinder.FIRST_CALL_TRANSACTION parcel为传过去的参数,reply为传回来的parcel,flags暂时为0把。出来之后就可以用了。但是这个数去哪了了呢? 告诉你,在自己之前定义的那个类MyBinder的一个复写方法onTransact中。

在这个方法中,可以readInt(),readString()将东西放在自己想要的地方,之后可以在reply中将数据传回去。



粘性和非粘性Service

在Service被注销后保存操作用的。


关于Service 我还没学好,以后要用再说了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值