Android Service 组件


1、创建一个Service


      创建一个Service类比较简单,只要定义一个类继承Service,覆盖该类中相应的方法就可以了。Service中定义了一系列和自身声明周期相关的方法,这些方法有:

  • onBind(Intent intent):是必须实现的一个方法,返回一个绑定的接口给Service。
  • onCreate():当Service第一次被创建时,有系统调用。
  • onStart(Intent intent, int startId):当通过startService()方法启动Service时,该方法被调用。
  • onDestroy():当Service不再使用,系统调用该方法。

      下面的代码演示了如何创建一个Service。


public class MyService extends Service {


// 可以返回null,通常返回一个有aidl定义的接口

@Override

public IBinder onBind(Intent intent) {

return null;

}


// Service创建时调用

@Override

public void onCreate() {

super.onCreate();

}


// 当客户端调用startService()方法启动Service时,该方法被调用

@Override

public void onStart(Intent intent, int startId) {

super.onStart(intent, startId);

}


// 当Service不再使用时调用

@Override

public void onDestroy() {

super.onDestroy();

}

}


      要想使用该Service必须在AndroidManif.xml配置文件中使用<service>元素声明该Service。在<service>元素中添加<intent-filter>指定如何访问该Service。


<service android:name="MyService">

<intent-filter>

<action android:name="com.amaker.ch08.app.action.MY_SERVICE" />

</intent-filter>

</service>


2、启动和停止Service


      一旦定义好一个Service就可以在其他组件中启动该Service来使用它了。启动一个Service使用Context.startService(Intent intent)方法,你会发现这和启动一个Activity非常相似,也是传递一个Intent。当我们调用startService()方法时,被调用的Service会调用它的onCreate()方法(如果该Service还未创建),接着调用onStart()方法。一旦Service启动后将一直运行直到调用了Context.stopService()或者stopSelf()。下面的代码演示了如何启动和停止一个Service。


// 创建Intent

Intent intent = new Intent();

// 设置Action属性

intent.setAction("com.amaker.ch08.app.action.MY_SERVICE");

// 启动该Service

startService(intent);

// 停止一个Service

stopService(intent);


3、绑定一个已经存在的Service


      我们可以调用startService()方法来启动一个Service方法,也可以通过bindService()方法来绑定一个Service。和调用startService()方法一样,Service会调用onCreate()方法来创建Service(如果它未创建),但是它不会调用onStart()方法而是调用onBind()返回客户端一个IBinder接口。绑定Service一般是用在远程Service调用。有关这个话题的详细内容下面将详细介绍。

      绑定Service需要三个参数:bindService(intent, conn, Service.BIND_AUTO_CREATE);第一个是Intent;第二个是ServiceConnection对象,我们创建该对象实现其onServiceConnected()和onServiceDisconnected()来判断连接成功或者断开连接;第三个参数是如何创建Service,一般指定绑定时自动创建。


// 连接对象

ServiceConnection conn = new ServiceConnection() {

// 连接时调用

public void onServiceConnected(ComponentName name, IBinder service) {

Log.i("SERVICE", "连接成功!");

}

// 断开时调用

public void onServiceDisconnected(ComponentName arg0) {

Log.i("SERVICE", "断开连接!");

}

};

// 绑定Service

bindService(intent, conn, Service.BIND_AUTO_CREATE);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值