第一篇 ( Aidl 进程间通信 )

老规矩,不废话,直奔主题 ^_^

 程序1

 结构如图:

第一篇 ( Aidl 进程间通信 )

Common_operation代码:

package Aidl_application_communication.Jason;



 interface COMMON_OPERATION {



	int Add(int x,int y);

}

myService代码:

package Aidl_application_communication.Jason;



import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.os.RemoteException;

import Aidl_application_communication.Jason.COMMON_OPERATION.Stub;



public class myService extends Service {

  

	private COMMON_OPERATION.Stub cos=new Stub() {

		

		public int Add(int x, int y) throws RemoteException {

			// TODO Auto-generated method stub

			//return 0;

			return x+y;

		}

	};

	@Override

	public IBinder onBind(Intent arg0) {

		// TODO Auto-generated method stub

		//return null;

		return cos;

	}



}

Aidl_application_communication_1Activity代码:

package Aidl_application_communication.Jason;



import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;



public class Aidl_application_communication_1Activity extends Activity {



	private Button start_btn;



	/** Called when the activity is first created. */

	@Override

	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);

		start_btn = (Button) this.findViewById(R.id.start_btn);

		start_btn.setOnClickListener(new OnClickListener() {



			public void onClick(View v) {

				// TODO Auto-generated method stub

				Intent it = new Intent(

						Aidl_application_communication_1Activity.this,

						myService.class);				startService(it);



				Toast.makeText(Aidl_application_communication_1Activity.this,

						"启动", Toast.LENGTH_LONG).show();



			}

		});



	}

}

程序2

结构如图:

第一篇 ( Aidl 进程间通信 )

Aidl_application_communication_2代码:

package Aidl_application_communication_2.Jason;



import android.app.Activity;

import android.content.ComponentName;

import android.content.Intent;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

import android.os.RemoteException;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

import Aidl_application_communication.Jason.COMMON_OPERATION;





public class Aidl_application_communication_2Activity extends Activity {



	private EditText x_txt;

	private EditText y_txt;

	private EditText z_txt;

	private Button jisuan_btn;

	private Button bind_btn;

	private Button unbind_btn;



	/** Called when the activity is first created. */

	@Override

	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);

		findAll();

		bind();

	}



	public void findAll() {

		x_txt = (EditText) this.findViewById(R.id.x_txt);

		y_txt = (EditText) this.findViewById(R.id.y_txt);

		z_txt = (EditText) this.findViewById(R.id.z_txt);

		jisuan_btn = (Button) this.findViewById(R.id.jisuan_btn);

		bind_btn = (Button) this.findViewById(R.id.bind_btn);

		unbind_btn = (Button) this.findViewById(R.id.unbind_btn);

	}



	public void bind() {

		jisuan_btn.setOnClickListener(mylistener);

		bind_btn.setOnClickListener(mylistener);

		unbind_btn.setOnClickListener(mylistener);

	}



	private View.OnClickListener mylistener = new OnClickListener() {



		public void onClick(View v) {

			// TODO Auto-generated method stub

			switch (v.getId()) {

			case R.id.jisuan_btn:

				try {

				 int z=	co.Add(Integer.valueOf(x_txt.getText().toString()), Integer.valueOf(y_txt.getText().toString()));

				 z_txt.setText(String.valueOf(z));

				} catch (NumberFormatException e) {

					// TODO Auto-generated catch block

					e.printStackTrace();

				} catch (RemoteException e) {

					// TODO Auto-generated catch block

					e.printStackTrace();

				}

				

				break;

			case R.id.bind_btn:

				Intent it=new Intent(COMMON_OPERATION.class.getName());

				bindService(it, sc, BIND_AUTO_CREATE);

				break;

			case R.id.unbind_btn:

				unbindService(sc);

				break;

			default:

				break;

			}

		}

	};

	private COMMON_OPERATION co = null;



	private ServiceConnection sc = new ServiceConnection() {



		public void onServiceDisconnected(ComponentName name) {

			// TODO Auto-generated method stub

			co = null;

			Toast.makeText(Aidl_application_communication_2Activity.this,

					"已经断开", Toast.LENGTH_LONG).show();

		}



		public void onServiceConnected(ComponentName name, IBinder service) {

			// TODO Auto-generated method stub

             co= COMMON_OPERATION.Stub.asInterface(service);

             Toast.makeText(Aidl_application_communication_2Activity.this,

 					"连接成功", Toast.LENGTH_LONG).show();

		}

	};



}

你可能感兴趣的:(aidl)