码迷,mamicode.com
首页 > 其他好文 > 详细

一分钟掌握Service生命周期

时间:2014-04-29 13:36:21      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:service 生命周期

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

                                                                                 mamicode.com,码迷


写个例子说明

一、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 {

	// 通过startService()方式调用
	@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);
	}
执行结果:

mamicode.com,码迷
三、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);
	}
执行结果:

mamicode.com,码迷


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

一分钟掌握Service生命周期

标签:service 生命周期

原文地址:http://blog.csdn.net/axiaoquan/article/details/24691907

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!