您的位置:首页 > 移动开发 > Android开发

Android Service 组件

2011-06-15 14:30 295 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: