安卓 aidl 绑定远程服务学习笔记

##建立一个服务类java

package com.tang.alipay;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;

public class AplipayService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		System.out.println("alipay:onBind");
		return new MyService();
	}
	private class MyService extends IServiceInterface.Stub
	{

		public void callAlipayMethod(String name){
			alipayMethod(name);//调用内部方法;
		}
		
	}
	
	@Override
	public boolean onUnbind(Intent intent) {
		System.out.println("alipay:onUnbind");
		return super.onUnbind(intent);
	}
	
	@Override
	public void onCreate() {
		System.out.println("alipay:onCreate");
		super.onCreate();
	}
	
	@Override
	public void onDestroy() {
		System.out.println("alipay:onDestroy");
		super.onDestroy();
	}
	
	public void alipayMethod(String name)
	{
		System.out.println("支付宝中服务的方法");
	}
}

##配置清单文件android

<service android:name=".AplipayService">
            <intent-filter >
                <action android:name="android.service.tang.alipay"/>
            </intent-filter>
        </service>

##抽取一个对外接口IServiceInterface写完后而后重命名成为.aidl文件app

重命名成.aidl后缀的时候编辑器会在gen目录下生成相应.java文件编辑器

package com.tang.alipay;

interface IServiceInterface {
	void callAlipayMethod(String name);
}

##在其余项目中调用这个服务方法ide

###把上面的aidl文件复制一份到项目src项目中;注意包名要和上面同样code

###调用服务接口

public void bindSer(View view)
	{
		Intent intent = new Intent();
		intent.setAction("android.service.tang.alipay");
		bindService(intent, new MyConn(), BIND_AUTO_CREATE);
	}
	
	private class MyConn implements ServiceConnection
	{
		@Override
		public void onServiceConnected(ComponentName name, IBinder ibinder) {
			is = IServiceInterface.Stub.asInterface(ibinder);
		}
		@Override
		public void onServiceDisconnected(ComponentName name) {
			
		}
	}
	
	public void callMethod(View view)
	{
		try {
			is.callAlipayMethod("haah");
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}
相关文章
相关标签/搜索