展会信息港展会大全

Android使用bindService启动服务
来源:互联网   发布日期:2016-01-13 22:13:27   浏览:1243次  

导读:一般情况下,我们使用startService(Intent service)来启动一个服务,但这种情况下无法得到Service对象的引用,通过Android bindService方法启动服务则可以实现此功能。下面通过一个小例子来演示一下:1:调用者......

一般情况下,我们使用startService(Intent service)来启动一个服务,但这种情况下无法得到Service对象的引用,通过Android bindService方法启动服务则可以实现此功能。下面通过一个小例子来演示一下:

1:调用者

package com.zhf.local;

import android.app.Activity;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

/**

* 此例的目的就是拿到MyService的引用,从而可以引用其内部的方法和变量

*

* @author Administrator

*

*/

public class LocalServiceActivity extends Activity {

/** Called when the activity is first created. */

private MyService myService;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Intent intent = new Intent(this, MyService.class);

bindService(intent, connection, Context.BIND_AUTO_CREATE);

}

private ServiceConnection connection = new ServiceConnection() {

@Override

public void onServiceDisconnected(ComponentName name) {

myService = null;

}

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

myService = ((MyService.MyBinder) service).getService();

System.out.println("Service连接成功");

// 执行Service内部自己的方法

myService.excute();

}

};

protected void onDestroy() {

super.onDestroy();

unbindService(connection);

};

}

2:服务者

package com.zhf.local;

import android.app.Service;

import android.content.Intent;

import android.os.Binder;

import android.os.IBinder;

public class MyService extends Service {

private final IBinder binder = new MyBinder();

@Override

public IBinder onBind(Intent intent) {

return binder;

}

public class MyBinder extends Binder {

MyService getService() {

return MyService.this;

}

}

public void excute() {

System.out.println("通过Binder得到Service的引用来调用Service内部的方法");

}

@Override

public void onDestroy() {

// 当调用者退出(即使没有调用unbindService)或者主动停止服务时会调用

super.onDestroy();

}

@Override

public boolean onUnbind(Intent intent) {

// 当调用者退出(即使没有调用unbindService)或者主动停止服务时会调用

System.out.println("调用者退出了");

return super.onUnbind(intent);

}

}

赞助本站

人工智能实验室

相关热词: bindService 启动 服务

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港