第10篇.activity和service之间的通信

来源:互联网 发布:深圳市蜂鸟软件科技 编辑:程序博客网 时间:2024/06/03 04:01

一、同一个apk内部,activity和service的通信

项目要求,进入activity启动service,并要求servcice能够传递数据给activity,activity能够交互service,下面列出大致思路:

1、activity在service启动之前,先构建个service对象,并向其传递一个handler

2、activity开启服务,activity绑定服务,并把绑定之后返回的service值存储到上一步中的service对象去

3、service通过handler向activity传递数据

这里面比较麻烦的就是在绑定service之前,activity就需要先构建一个service对象,并传递数据给他,在service起来之后主动和activity通信,之后在绑定服务的时候对这个service对象重新赋值,否者会在某些activity调用service方法的时候出现空指针


service里面:

    private final IBinder mBinder = new LocalBinder();    public class LocalBinder extends Binder {        RecordServer getService() {            // Return this instance of LocalService so clients can call public methods            return RecordServer.this;        }    }

activity里面

    private static RecordServer mRecordServer;    private static boolean mBound = false;

    public void onResume()    {        Intent intent = new Intent(this, RecordServer.class);          bindService(intent, mConnection, Context.BIND_AUTO_CREATE);startService(intent);        super.onResume();    }
 private ServiceConnection mConnection = new ServiceConnection() {       @Override       public void onServiceConnected(ComponentName className,               IBinder service) {           // 已经绑定了LocalService,强转IBinder对象,调用方法得到LocalService对象           LocalBinder binder = (LocalBinder) service;           mRecordServer = binder.getService();           mBound = true;       }       @Override       public void onServiceDisconnected(ComponentName arg0) {       mRecordServer.SetHandler(null);         mBound = false;       }   }; 


二、不在同一个apk里面的相互通信



0 0
原创粉丝点击