从头学Android之Service初步二
在上一篇,我们学习了通过startService来启动Service,由于篇幅过长,所以这一篇是接上一篇的
二、bindService方法启动Service
先看bindSerivce(Intent service,ServiceConnection conn,int flags)函数
参数说明:
service:通过该参数也就是Intent我们可以启动指定的Service
conn:该参数是一个ServiceConnection对象,这个对角用于监听访问者(也可以说成是客户端)与Service之间的连接情况,当访问者与Service连接成功时将回调ServiceConnection对象的onServiceConnected(ComponentName name,Ibinder service)方法;如果断开将回调onServiceDisConnected(CompontName name)方法
flags:指定绑定时是否自动创建Service。
步骤:
1、 新建一个类继承于Service类,重写onBind()、onCreate()、onUnBind()、onDestory()方法。再在这个类里声明一个Ibinder的子类对象用于提供于客户端,同时可以定义一些成员变量,客户端可以获取到这个成员变量属性
2、 在AndroidMainfest.xml文件中注册这个Service
3、 在Activity里通过bindService绑定Service
示例代码:
package com.jiahui.serviceDemo;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
public class MyService extends Service {
private int count;
private boolean quit;
private MyBinder binder = new MyBinder();
// 新建一个Binder对象用于提供给客户端
public class MyBinder extends Binder {
public int getCount() {
return count;
}
}
@Override
public IBinder onBind(Intent intent) {
System.out.println("----onBind-----");
// 返回给客户端一个Binder对象
return binder;
}
@Override
public void onCreate() {
System.out.println("----onCreate-----");
// 启动一条线程修改成员变量属性
new Thread() {
@Override
public void run() {
while (!quit) {
try {
Thread.sleep(1000);
} catch (Exception e) {
}
count++;
}
}
}.start();
}
@Override
public void onDestroy() {
this.quit = true;
System.out.println("----onDestory-----");
super.onDestroy();
}
@Override
public boolean onUnbind(Intent intent) {
System.out.println("----onUnbind-----");
return super.onUnbind(intent);
}
}
MainActivty
package com.jiahui.serviceDemo;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btnBind;
private Button btnUnBind;
private Button btnGetData;
MyService.MyBinder binder;
// 定义一个ServiceConnection对象
private ServiceConnection conn = new ServiceConnection() {
// 当客户端与Service断开连接时
@Override
public void onServiceDisconnected(ComponentName name) {
System.out.println("---onServiceDisconnected----");
}
// 当客户端与Service建立连接时
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
System.out.println("---onServiceConnected----");
binder = (MyService.MyBinder) service;
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnBind = (Button) findViewById(R.id.btnBind);
btnUnBind =
补充:移动开发 , Android ,