绑定服务&调用服务里面的方法
来源:互联网 发布:个人养老保险算法 编辑:程序博客网 时间:2024/05/01 04:29
一个继承Service的TestService类,里面有一个changeTest(String name)方法,要在activity中调用这个方法改变服务中的一些状态,进行一下设计。
public class TestService extends Service {//服务被成功绑定的时候会调用该方法@Overridepublic IBinder onBind(Intent arg0) {System.out.println("服务被成功的绑定了");//返回自定义的代理人//步骤2.服务成功绑定的时候,调用onBind方法,返回一个IBinder对象return new MyBinder();}private class MyBinder extends Binder implements IService{public void bindChange(String name){changeTest(name);}}public void changeTest(String name){System.out.println("这是服务里面的方法"+name);}@Overridepublic void onCreate() {super.onCreate();System.out.println("服务被创建");}@Overridepublic void onDestroy() {super.onDestroy();System.out.println("服务被销毁");}}
public class MainActivity extends Activity {//步骤4:在activity里面得到服务Ibinder对象的引用private IService myBinder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void startService(View view){Intent intent = new Intent(this, TestService.class);startService(intent);}public void stopService(View view){Intent intent = new Intent(this, TestService.class);stopService(intent);}/** * 采用绑定的方式开启服务,在TestService中会自动调用onBind方法,该方法返回一个IBinder对象 * 在MainActivity里面实现onServiceConnected()方法,传递进来IBinder参数,这样 * IBinder对象就充当service和activity之间的代理人的角色 * @param view */public void bindService(View view){//intent激活服务的意图//conn 代理人,中间人对象用来跟服务建立联系,不能为空Intent intent = new Intent(this, TestService.class);//步骤1.采用绑定服务的方法开启服务bindService(intent, new MyConn(), 0);}private class MyConn implements ServiceConnection{//Called when a connection to the Service has been established@Overridepublic void onServiceConnected(ComponentName arg0, IBinder service) {System.out.println("service的代理人被返回回来了");//步骤3:服务返回的IBinder对象会传递个MyConn的回调方法onServiceConnected方法myBinder = (IService)service;}//Called when a connection to the Service has been lost//只有在程序异常终止的时候会自动调用@Overridepublic void onServiceDisconnected(ComponentName arg0) {// TODO Auto-generated method stub}}//步骤5:利用IBinder对象间接的调用了服务里面的方法public void changeService(View view){myBinder.bindChange("仁者无敌");}}
public interface IService {public void bindChange(String name);}服务里面的MyBinder类需受到保护,不可以随便让外部代码访问,所以需为private,但是activity中要拿到MyBinder类,故此处定义一个接口IService,MyBinder类实现了这个接口,在activity中
private IService myBinder;
myBinder = (IService)service;通过接口拿到MyBinder的对象,这样通过这个对象调用的bindChange方法就是实现IService接口的MyBinder类里面实现的方法。
- 绑定服务&调用服务里面的方法
- Android中服务里面方法的调用,开启,绑定
- activity以绑定服务的方式开启服务并调用服务里面的方法
- 绑定服务:调用服务内部的方法
- andorid,绑定服务,调用服务的方法
- Android--绑定服务调用服务的方法
- 91_采用绑定服务的方式调用服务里面的方法
- 绑定服务并调用服务的方法,解除绑定
- 利用广播调用服务里面的方法
- Android--调用服务里面的方法
- 通过bindService调用服务里面的方法
- 绑定的方式调用服务的方法
- 46.android开启服务,调用服务里面的方法
- 绑定服务调用方法的回顾
- android,aidl,绑定远程服务,调用远程服务的方法
- android之绑定服务调用服务的方法
- Android绑定方式开始服务&调用服务当中的方法
- Android启动服务和绑定服务的方法调用
- HDU 4588 Count The Carries(数学 找规律)
- C语言-sizeof
- 小侃#pragma
- ASMCMD命令释义
- pl/sql 连64bit oracle11g
- 绑定服务&调用服务里面的方法
- Myeclipse光标老是自动跑,位置偏移
- JS,C#URL传递参数时的编码问题
- 解释性语言与编译性语言
- js 回车事件绑定
- ActivityGroup简介1
- Css复习
- 移植你的driver到64位平台
- [Qt][ubuntu 13.4]qdebug使用方法