博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ANDROID笔记:AIDL介绍
阅读量:5167 次
发布时间:2019-06-13

本文共 2903 字,大约阅读时间需要 9 分钟。

package com.example.android_server.aidlService;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.os.RemoteException;import com.example.android_server.aidlService.IStudent.Stub;public class MyAIDLService extends Service {    StudentBinder binder=null;    @Override    public void onCreate() {        super.onCreate();        binder=new StudentBinder();    }    @Override    public IBinder onBind(Intent intent) {        return binder;    }    /**     * 自定义一个Binder,继承存根类     *      * @author Administrator     *      */    public class StudentBinder extends Stub {        @Override        public int getCount() throws RemoteException {            return 1;        }    }}

IStudent.aidl

package com.example.android_server.aidlService;interface IStudent{int getCount();}

在manifest中注册服务:

 

另一个项目中的调用该Service

package com.example.android_serviceclient;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.os.RemoteException;import android.widget.TextView;import android.widget.Toast;import com.example.android_server.aidlService.IStudent;import com.example.android_server.aidlService.IStudent.Stub;public class MainActivity extends Activity implements Handler.Callback {    private IStudent iStudent;    private TextView textView=null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView=(TextView) findViewById(R.id.text);                Intent intent = new Intent();        intent.setAction("com.example.aidlservice");        startService(intent);        bindService(intent, connection, BIND_AUTO_CREATE);                Handler handler = new Handler(this);        handler.sendEmptyMessageDelayed(1, 2000);    }    private ServiceConnection connection = new ServiceConnection() {        @Override        public void onServiceDisconnected(ComponentName name) {        }        @Override        public void onServiceConnected(ComponentName name, IBinder service) {            System.out.println("onServiceConnected");            iStudent=Stub.asInterface(service);        }    };    @Override    public boolean handleMessage(Message msg) {        try {            textView.setText(iStudent.getCount() +"");            Toast.makeText(MainActivity.this, "得到的值:"+iStudent.getCount() + "", 200)                    .show();        } catch (RemoteException e) {            e.printStackTrace();        }        return false;    }}

aidl是Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口.

转载于:https://www.cnblogs.com/afluy/p/3422863.html

你可能感兴趣的文章
Jzoj5455【NOIP2017提高A组冲刺11.6】拆网线
查看>>
特定字符序列的判断(1028)
查看>>
华为面试
查看>>
平衡二叉树(AVL Tree)
查看>>
【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
查看>>
【CF799E】Aquarium decoration 线段树
查看>>
大运飞天 鲲鹏展翅
查看>>
从ECMA到W3C
查看>>
软件工程--第十六周学习进度
查看>>
yii2 ActiveRecord多表关联以及多表关联搜索的实现
查看>>
搜狗输入法安装--ubuntu
查看>>
ps/2接口键盘的输入及显示
查看>>
Swift———a Glance(极客学院)笔记
查看>>
【poj3294-不小于k个字符串中最长公共子串】后缀数组
查看>>
java如何获取其它用户登录的真是IP地址
查看>>
Jquery通过指定层次关系获取元素
查看>>
c# for 和 foreach 的区别
查看>>
docfx (一)
查看>>
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
查看>>
深度学习之前馈神经网络(前向传播和误差反向传播)
查看>>