老规矩,不废话,直奔主题 ^_^
程序1
结构如图:
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_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(); } }; }