Welcome 微信登录

首页 / 移动开发 / Android / Android使用Messenger实现service与activity交互

service与activity交互的方式有多种,这里说说使用Messenger来实现两者之间的交互。
Service程序:
public class MessengerService extends Service { final Messenger mMessenger = new Messenger(new IncomingHandler()); @Override public IBinder onBind(Intent intent) {return mMessenger.getBinder(); } @SuppressLint("HandlerLeak") class IncomingHandler extends Handler {@Overridepublic void handleMessage(Message msg) { switch (msg.what) { case 0:Toast.makeText(MessengerService.this,"Hello lenve!", Toast.LENGTH_LONG).show();break; case 1:Toast.makeText(MessengerService.this,"Hello lenve!Hello world!", Toast.LENGTH_LONG).show();break; default:break; }} }}
MainActivity.javaL:

public class MainActivity extends Activity { private Messenger mMessenger; private ServiceConnection conn; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intent = new Intent(this,MessengerService.class);conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) {mMessenger = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) {mMessenger = new Messenger(service); }}; } @Override protected void onStart() {super.onStart();bindService(intent, conn, BIND_AUTO_CREATE); } @Override protected void onStop() {super.onStop();unbindService(conn); } public void onClick(View v){Message msg = null;switch (v.getId()) {case R.id.button1: msg = Message.obtain(null, 0, 0, 0); try {mMessenger.send(msg); } catch (RemoteException e) {e.printStackTrace(); } break;case R.id.Button01: msg = Message.obtain(null, 1, 0, 0); try {mMessenger.send(msg); } catch (RemoteException e) {e.printStackTrace(); } break;default: break;} }}
原文链接:http://blog.csdn.net/u012702547/article/details/46989417
以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。