zoukankan      html  css  js  c++  java
  • 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 {
    
            @Override
            public 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.java

    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;
            }
        }
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。

  • 相关阅读:
    python--DenyHttp项目(1)--调用cmd控制台命令os.system()
    python--DenyHttp项目(1)--GUI:tkinter☞ module 'tkinter' has no attribute 'messagebox'
    python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer
    python--DenyHttp项目(1)--socket编程:客户端与服务器端
    平台后台编辑功能实现
    java中的map
    java 重写(override)与 重载(overload)
    java继承 extends
    java泛型
    java中Map和List的使用
  • 原文地址:https://www.cnblogs.com/lenve/p/4770538.html
Copyright © 2011-2022 走看看