美文网首页
AIDL跨进程调用服务

AIDL跨进程调用服务

作者: Wocus | 来源:发表于2017-03-14 14:41 被阅读14次

    一,创建服务端

    新建一个项目并创建AIDL文件夹

    在AIDL文件夹里面创建aidl格式文件(包名一定要有)

    基于aidl的编程就是编写服务器接口,我写了一个带有两个参数,带有返回值的接口,接下来并在Service里实现这个接口

    就这样,服务端已经搭建完成,接下来搭建客户端

    1,创建AIDL文件夹,2.拷贝服务端的aidl文件(AIDL文件夹和里面包名必须和服务端包名一致)

    然后在Activity里面调用

    public classMainActivityextendsAppCompatActivity {

    privateIMyAidlInterfaceiMyAidlInterface;

    privateTextViewtextView;

    privateServiceConnectionconnection=newServiceConnection() {

    //当服务器连接的时候调用

    @Override

    public voidonServiceConnected(ComponentName name, IBinder service) {

    //连接远程服务

    iMyAidlInterface=IMyAidlInterface.Stub.asInterface(service);

    }

    //当服务器断开的时候调用

    @Override

    public voidonServiceDisconnected(ComponentName name) {

    iMyAidlInterface=null;

    }

    };

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    textView= (TextView) findViewById(R.id.txt_aidl);

    Intent intent=newIntent();

    //两个参数分别为,服务器广播类包名,服务器广播类全名

    intent.setComponent(newComponentName("youju.com.fuwu","youju.com.fuwu.MyService"));

    //启动服务

    bindService(intent,connection, Context.BIND_AUTO_CREATE);

    textView.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View v) {

    try{

    int s=iMyAidlInterface.getHe(5,5);

    textView.setText(""+s);

    }catch(RemoteException e) {

    e.printStackTrace();

    }

    }

    });

    }

    }

    android studio不会自动编译,编写aidl文件之后要编译才会生成java文件

    相关文章

      网友评论

          本文标题:AIDL跨进程调用服务

          本文链接:https://www.haomeiwen.com/subject/wofhnttx.html