Android 开启服务Service

本文详细介绍了在Android中如何使用Context.startService()和Context.bindService()方法启动服务,并阐述了这两种方法的区别以及服务的生命周期管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:继承Service类

public class ExampleService extends Service {}

第二步:在AndroidManifest.xml文件中的<application>节点里对服务进行配置:<service android:name=".ExampleService" />

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。


1、如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStartCommand ()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStartCommand ()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

2、如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。


注:已解除绑定的服务再解除绑定会抛出异常。


public class ExampleService extends Service {
	int mStartMode; // 标识服务被杀死后的处理方式
	IBinder mBinder; // 用于客户端绑定的接口
	boolean mAllowRebind; // 标识是否使用onRebind

	@Override
	public void onCreate() {
		// 服务正被创建
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// 服务正在启动,由startService()调用引发
		return mStartMode;
	}

	@Override
	public IBinder onBind(Intent intent) {
		// 客户端用bindService()绑定服务
		return mBinder;
	}

	@Override
	public boolean onUnbind(Intent intent) {
		// 所有的客户端都用unbindService()解除了绑定
		return mAllowRebind;
	}

	@Override
	public void onRebind(Intent intent) {
		// 某客户端正用bindService()绑定到服务,
		// 而onUnbind()已经被调用过了
	}

	@Override
	public void onDestroy() {
		// 服务用不上了,将被销毁
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值