zoukankan      html  css  js  c++  java
  • Android开发--Service和Activity通过广播传递消息

      Android的Service也运行在主线程,但是在服务里面是没法直接调用更改UI,如果需要服务传递消息给Activity,通过广播是其中的一种方法:

      一、在服务里面发送广播

        通过intent传送数据、通过setAction 设置Activity接收广播时要过滤的动作名   

     Intent intent = new Intent();
     intent.putExtra("key", "test");
     intent.setAction("location.reportsucc");
     sendBroadcast(intent);

      

      二、在Activity中创建内部类做为广播接收器,需实现BroadcastReceiver

     //内部类,实现BroadcastReceiver
        public class LocationReceiver extends BroadcastReceiver {
            //必须要重载的方法,用来监听是否有广播发送
            @Override
            public void onReceive(Context context, Intent intent) {
                String intentAction = intent.getAction();
                if (intentAction.equals("location.reportsucc")) {
                    
                }
            }
        }

      三、在Activity创建时注册广播接收器,

    filter.addAction值必须和服务里面注册的Action名称一致
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home);
    
     
            locationReceiver = new LocationReceiver();
            IntentFilter filter = new IntentFilter();
            filter.addAction("location.reportsucc");
            registerReceiver(locationReceiver, filter);
        }

      四、最后记住在不需要广播接收器的时候,卸载广播接收器。例如在Activity销毁时卸载广播接收器

      

        @Override
        protected void onDestroy() {
            unregisterReceiver(locationReceiver);
            super.onDestroy();
        }

        总结:通过发送广播,是一种实现了服务和活动之间互相通信的方式。

        

  • 相关阅读:
    libnids-1.24 使用源码问题
    Linux学习man page
    shell 脚本,提取文件中的内容
    shell中的语法(1)
    python 爬取百度翻译进行中英互译
    matlab等高线绘制
    matlab 对tif数据高程图的处理分析
    python网络爬虫与信息提取 学习笔记day3
    python网络爬虫与信息提取 学习笔记day2
    python网络爬虫与信息提取 学习笔记day1
  • 原文地址:https://www.cnblogs.com/firebet/p/13963792.html
Copyright © 2011-2022 走看看