Android中service基本用法,生命周期2

来源:互联网 发布:矩阵秩变成1 编辑:程序博客网 时间:2024/05/08 18:59

在上一篇博客中讲了一下生命周期,这里直接写例子。

service的Binder启动方式

项目结构


创建service

public class MyService extends Service {
//创建一个内部类的实例
private DownloadBinder mBinder=new DownloadBinder();
/**
* 创建一个内部类
*/
class DownloadBinder extends Binder{

public void startDownload() {
Log.i("1","startDownload方法被调用了" );


}
public int getProgress(){
Log.i("1", "getProgress方法被调用了");
return 0;

}

}

@Override
public void onCreate() {

super.onCreate();
Log.i("1", "onCreate方法被调用了");
}
@Override
public void onDestroy() {

super.onDestroy();
Log.i("1", "onDestroy方法被调用了");
}

@Override
public IBinder onBind(Intent intent) {
//返回内部类的对象
return mBinder;
}


}

主清单注册

  <service 
            android:name="com.zhh.android.MyService"
            ></service>

activity中绑定和解绑

public class MainActivity extends Activity implements OnClickListener {
private Button bind_service;//绑定按钮
private Button unbind_service;//解除绑定按钮


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bind_service = (Button) findViewById(R.id.bind_service);
unbind_service = (Button) findViewById(R.id.unbind_service);
bind_service.setOnClickListener(this);
unbind_service.setOnClickListener(this);
}
/**
* 创建ServiceConnection的匿名类
*/
private ServiceConnection connection = new ServiceConnection() {
        /**
         * 解除绑定时调用
         */
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub


}
        /**
         * 和服务绑定成功时调用
         */
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//得到DownloadBinder的实例,就可以调用类中的方法了
MyService.DownloadBinder downloadBinder = (DownloadBinder) service;
downloadBinder.startDownload();
downloadBinder.getProgress();


}
};



/**
* 按钮的监听器
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
/**
* 绑定服务
*/
case R.id.bind_service:
Intent bindIntent = new Intent();
bindIntent.setClass(MainActivity.this, MyService.class);
/*bindService第三个参数是一个标志位BIND_AUTO_CREATE,表示活动和服务绑定后自动创建服务
*会调用服务的onCreate();方法
*/
bindService(bindIntent, connection, BIND_AUTO_CREATE);//绑定服务
//绑定会调用服务中的onCreate();startDownload();getProgress();



break;
/**
* 解除绑定
*/
case R.id.unbind_service:
            unbindService(connection);//解除绑定
            //解绑会调用服务中的onDestroy();
break;


}


}


}//class

如果没有明白下载我的例子

http://download.csdn.net/detail/zhaihaohao1/8290861




0 0
原创粉丝点击