关于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. ActionBar的自定义样式
  2. Android自定义对话框(Dialog)
  3. 自定义android preference组件
  4. android定义全局变量
  5. android 自定义TextView实现秒级数字时钟
  6. Android之自定义适配器
  7. Android中自定义Dialog常用的两种方式
  8. Android 自定义充电动画
  9. android AlertDialog自定义全屏显示

随机推荐

  1. Android:SlidingMenu(侧滑菜单)用法示例
  2. 《Kotlin》 Android(安卓)Studio3.0 新特
  3. android service 例子(电话录音和获取系统
  4. android:inputType标签、textView限制输
  5. Android(安卓)Studio 3.0下Jni开发环境配
  6. [android研究联系人之二]联系人Email/Nic
  7. 解决给一组Button设置Background导致点击
  8. [转]Android中的BatteryService及相关组
  9. 让应用程序具体相应权限
  10. mac 下配置maven环境( 包括android工程使