关于Android IDL的知识 可阅读《Google Android 揭秘》的P104页,也可参见ApiDemos中的代码 其他的不说,直接上代码。 1.先写一个.aidl远程接口
package com.originatechina; //定义包interface ISimpleMathService { //声明接口名称int add(int a, int b);  //描述方法}
在eclipse 它会自动在gen文件夹对应的包下生成ISimpleMathService.java文件。 2.公开远程接口
package com.originatechina;//导入相应的包public class SimpleMathService extends Service {// 实现远程接口private final ISimpleMathService.Stub binder = new ISimpleMathService.Stub() {@Overridepublic int add(int a, int b) throws RemoteException {return a + b;}};@Overridepublic IBinder onBind(Intent intent) {return this.binder; // 返回一个表示远程接口的对象 IBinder}}
3.绑定到服务
package com.originatechina;//导入相应的包public class MainActivity extends Activity {   private ISimpleMathService service; // 定义远程接口类型变量private boolean bound; // 定义表示绑定状态的布尔变量private Button addButton; //请先在布局文件中添加一个按钮组件private ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder iservice) {service = ISimpleMathService.Stub.asInterface(iservice);bound = true;}@Overridepublic void onServiceDisconnected(ComponentName name) {service = null;bound = false;}};    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                addButton = (Button) findViewById(R.id.add_btn); // 省略获取View部分        addButton.setOnClickListener(listener);            }        private OnClickListener listener = new OnClickListener(){@Overridepublic void onClick(View v) {int a = 10;int b = 20;//省略从布局中获取字符串 并转换为int类型//doBindService(); //不能置于此处,否则onServiceConnected()还来不及调用,//service为null,以下语句抛空指针异常//可放在onCreate() 或者 onStart() 里面try {int result = service.add(a, b); // 使用远程对象执行操作Toast.makeText(MainActivity.this, "" + a + "+" + b + "=" + result, 2000).show();} catch (RemoteException e) {e.printStackTrace();}}    };        @Override    public void onStart() {    super.onStart();    doBindService();     }        @Override    public void onStop() {    super.onStop();    doUnbindService();        }        void doBindService() {    if(!bound) {    bindService(new Intent(this, SimpleMathService.class),     connection,     Context.BIND_AUTO_CREATE); //建立绑定    }    }        void doUnbindService() {    if(bound) { // 解除绑定    unbindService(connection);    }    }}
4. 在AndroidManifest.xml中定义你的service
<service android:name=".SimpleMathService" />
然后运行即可。

更多相关文章

  1. android 自定义控件属性
  2. Android(安卓)Camera (android2.2) 资料一
  3. 搭建android测试环境
  4. Android(安卓)SharedPreferences和File
  5. android:versionCode和android:versionName 用途
  6. Android(安卓)NFC架构分析
  7. Android单位转换工具类
  8. 解决EditText不显示光标的三种方法(总结)
  9. Android自定义对话框(Dialog)

随机推荐

  1. android 中如何监听耳机键消息
  2. Android(安卓)Studio创建项目
  3. Android获取SD卡中选中图片的路径(URL)
  4. 详谈Android中onTouch与onClick事件的关
  5. Android(安卓)学习笔记:文件访问
  6. Android(安卓)多次点击的另一种思路
  7. Android之三角函数
  8. Android源码mm模块编译 & mm编译apk
  9. android系统属性获取及设置
  10. Android导入项目后,左上角报错的解决方法