1 package com.lixu.messenger; 2 3 import android.app.Activity; 4 import android.app.Service; 5 import android.content.ComponentName; 6 import android.content.Intent; 7 import android.content.ServiceConnection; 8 import android.os.Bundle; 9 import android.os.IBinder; 10 import android.os.Message; 11 import android.os.Messenger; 12 import android.os.RemoteException; 13 import android.util.Log; 14 import android.view.View; 15 import android.view.View.OnClickListener; 16 import android.widget.Button; 17 18 public class MainActivity extends Activity implements OnClickListener { 19 private ServiceConnection sc; 20 private Messenger sender; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); 26 27 Button btn1 = (Button) findViewById(R.id.btn1); 28 Button btn2 = (Button) findViewById(R.id.btn2); 29 30 btn1.setOnClickListener(this); 31 btn2.setOnClickListener(this); 32 33 } 34 35 public void bindService() { 36 sc = new ServiceConnection() { 37 38 @Override 39 public void onServiceDisconnected(ComponentName name) { 40 41 } 42 43 @Override 44 public void onServiceConnected(ComponentName name, IBinder service) { 45 sender = new Messenger(service); 46 } 47 48 }; 49 Intent intent = new Intent(this, MyMessenger.class); 50 bindService(intent, sc, Service.BIND_AUTO_CREATE); 51 Log.e("开始绑定", "绑定成功"); 52 53 } 54 55 public void startService() { 56 Intent it = new Intent(this, MyMessenger.class); 57 startService(it); 58 Message msg = new Message(); 59 int[] num = { 309, 713 }; 60 msg.obj = num; 61 msg.what = Changliang.WHAT; 62 try { 63 sender.send(msg); 64 } catch (RemoteException e) { 65 e.printStackTrace(); 66 } 67 68 } 69 70 @Override 71 public void onClick(View v) { 72 switch (v.getId()) { 73 case R.id.btn1: 74 bindService(); 75 break; 76 case R.id.btn2: 77 startService(); 78 break; 79 80 default: 81 break; 82 } 83 84 } 85 86 @Override 87 protected void onDestroy() { 88 super.onDestroy(); 89 unbindService(sc); 90 Intent it = new Intent(this, MyMessenger.class); 91 stopService(it); 92 93 } 94 }
1 package com.lixu.messenger; 2 3 import android.app.Service; 4 import android.content.Intent; 5 import android.os.Handler; 6 import android.os.IBinder; 7 import android.os.Message; 8 import android.os.Messenger; 9 import android.util.Log; 10 11 public class MyMessenger extends Service { 12 private int a; 13 private int b; 14 private Messenger mMessenger; 15 16 @Override 17 public void onCreate() { 18 super.onCreate(); 19 Handler handler = new Handler() { 20 @Override 21 public void handleMessage(Message msg) { 22 super.handleMessage(msg); 23 if (msg.what == Changliang.WHAT) { 24 int[] nums = (int[]) msg.obj; 25 a = nums[0]; 26 b = nums[1]; 27 } 28 } 29 }; 30 mMessenger=new Messenger(handler); 31 } 32 33 34 @Override 35 public int onStartCommand(Intent intent, int flags, int startId) { 36 int numshe = a + b; 37 Log.e("服务器收到结果:", numshe + ""); 38 return super.onStartCommand(intent, flags, startId); 39 } 40 41 @Override 42 public boolean onUnbind(Intent intent) { 43 return super.onUnbind(intent); 44 } 45 46 @Override 47 public IBinder onBind(Intent arg0) { 48 return mMessenger.getBinder(); 49 } 50 51 }