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

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

时间: 2024-10-25 19:00:30

android开发之使用Messenger实现service与activity交互的相关文章

【Android开发学习】【第二课】Activity学习(1)

什么是Activity,就是我们所看到的 需要理解以下四句话: 1.一个Activity就是一个类,并且这个类需要集成Activity: 2.需要重写OnCreat方法 3.每个Activity都需要在AndroidManifest.xml中进行配置 xml中加入了<intent-filter>说明应用程序启动时先运行这个Activity 4.为Activity添加必要的控件,就可以生成我们想要的界面 在res的layout下的xml就是布局文件 例如这样的: 代码: 效果: [Android

Android开发笔记(8)——调用子Activity

转载请注明:http://www.cnblogs.com/igoslly/p/6853730.html  调用子Activity 需要子Activity返回值 MainActivity使用startActivityForResult方法 毋需子Activity返回值 MainActivity使用startActivity方法 MainActivity传值子Activity 直接设置intent.putExtras MainActivity传值时: Intent intent =new Inten

android开发 使用Action启动/关闭Service

前面有用使用Intent来控制  Service 使用的参数是Service的类 Service的启动/关闭还有另外一种方式来控制 通过Intent传入Action的参数  在manifest中注册一个Service并且设置一个action <service android:enabled="true" android:exported="false" android:name="com.services.sev.PlayService"

android开发步步为营之72:右滑关闭Activity

通过右滑手势关闭当前Activity,这个是很常见的需求,网上参考过几篇文章发现实现都比较复杂,他们大多自己另外写了个Layout,然后这个Layout当做页面的布局,经测试其实有更简单一点的方法,写个BaseActivity,其他Activity继承即可.这里给出代码,大家测试看看.有问题回馈一下,谢谢! package com.figo.study.activity; import android.app.Activity; import android.os.Bundle; import

《Android开发艺术探索》读书笔记之Activity的生命周期

两种不同情况下的Activity生命周期 (1)典型情况下的生命周期 指在有用户参与的情况下,Activity所经过的生命周期的改变. (2)异常情况下的生命周期 指Activity被系统回收或者由于当前设备的Configuration发生改变重而导致Activity被销毁传重建. 看看官方文档的Activity生命周期图 注意以下几点: (1)onstart()和onResume()从实际使用过程来说差不多,但是onstart()的时候Activity虽然可见啦但是还在后台,onResume(

Service和Activity交互之广播方式

一.使用场景如果要通知多个Activity,广播较为适合.但广播较为耗费性能. 二.Broadcast更新Activity中的UI 1.新建一个接口OnUpdateUI public interface OnUpdateUI { void updateUI(String i); } 2.BroadcastReceiver代码 public class MyBroadcast extends BroadcastReceiver { OnUpdateUI onUpdateUI; @Override

android开发 关于Service的研究

两年学习android开发的时候  了解到Service的技术 一直没抽出时间整理这块内容 现在终于有时间来详细的比较深入的编码 理解这个Service了 一. Service与Activity android开发是离不开Activity的 Activity相当于WIN的窗口 但是一般只有一个现实在前端 其他的Activity要么压到后台的栈中 要么手动销毁掉了 而Service是可以启动多个的 这样多个Service就是相当是并行状态 并且 这个Service可以和Activity保持相对独立

【转】Android开发笔记(序)写在前面的目录

原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入门上:其次是想拾缺补漏,写写虽然小众却又用得着的东西:另外就是想以实用为主,不求大而全,但求小而精:还有就是有的知识点是java的,只是Android开发也会经常遇上,所以蛮记下来.个人的经

Android—Service与Activity的交互

service-Android的四大组件之一.人称"后台服务"指其本身的运行并不依赖于用户可视的UI界面 实际开发中我们经常需要service和activity之间可以相互传递数据维持程序的运行. 先了解Service的生命周期吧. 新建一个类继Service: package com.example.myservicedemo.service; import android.app.Service; import android.content.Intent; import andr