service中binder作用以及AIDL的区别

找到组织 发布于 2013/12/13 14:39
阅读 2K+
收藏 1

在Service中:public IBinder onBinder() {  return new Binder();}然后再activity中先声明一个全局的Service变量在onServiceConnected{}中通过service实例就能访问service的东西了,那么这还有什么用呢AIDL.

public class MainActivity extends Activity {
 
Intent intent= null;
MPlayService mservice= new MPlayService();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);

intent= new Intent(this, mservice.getClass());
bindService(intent, conn, Context.BIND_AUTO_CREATE);
intent= new Intent(this, mservice.getClass());
startService(intent);
}

private ServiceConnection conn = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {

mservice.my_start();
}
public void onServiceDisconnected(ComponentName className) {

System.out.println("onServiceDisconnected");
};
};
Service:

@Override

public IBinder onBind(Intent intent) {

// return stub;

 return new Binder();

}

public void my_start() {

mPlayer.start();

}

大家给点意见呗,


加载中
0
obaniu
obaniu

Binder实质是为了其地方和service建立交互桥梁,而AIDL即是交互的沟通语言。

AIDL是一种Remote交互语言。实现进程之间 方法、数据(Parcelable)的交互。简单的说就是一种远程调用协议。


返回顶部
顶部