一分钟掌握Service生命周期

Service有两种启动方式,1、通过startService启动。2、通过bindService()方式启动。下图说明了以两种方式启动时service的生命周期。

                                                                                 


写个例子说明

一、Service

package com.example.aidlexample;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;

import com.example.aidlexample.Dog.Stub;

public class DogDescribe extends Service {

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// TODO Auto-generated method stub
		System.out.println("通过startService方式调用" + "onStartCommand()执行 ");
		return super.onStartCommand(intent, flags, startId);
	}

	private DogBinder dogbinder;

	// 将IBinder对象返回给访问者
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("通过bindService调用" + "onBind()执行");
		return dogbinder;
	}

	@Override
	public boolean onUnbind(Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("onUnbind()");
		return super.onUnbind(intent);
	}

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		dogbinder = new DogBinder();
	}

	// 继承自动代码生成的类Stub(实现了IBinder接口)
	public class DogBinder extends Stub {

		@Override
		public String getDogName() throws RemoteException {
			// TODO Auto-generated method stub
			return "xiaokeai";
		}

		@Override
		public String getDogWeight() throws RemoteException {
			// TODO Auto-generated method stub
			return "30kg";
		}

	}

}

二、startService()方式启动

该方式Service里的onStartCommand()方法执行

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Intent it = new Intent();
		ComponentName comp = new ComponentName(MainActivity.this,
				DogDescribe.class);
		it.setComponent(comp);
		startService(it);
	}
执行结果:


三、bindService()方式启动

该方式Service里的onBind()方法执行,客户端调用unbindService()时,Service里的unBind()执行

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Intent it = new Intent();
		ComponentName comp = new ComponentName(MainActivity.this,
				DogDescribe.class);
		it.setComponent(comp);
		bindService(it, conn, Service.BIND_AUTO_CREATE);
	}
执行结果:



不知道大家清楚了没有,关键是看清最上面一副图,哈哈...................

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值