zoukankan      html  css  js  c++  java
  • Android学习之路十三:BroadCast

      Android的广播机制包含三个基本要素:

    1.广播(Broadcast)----用于发送广播;

    2.广播接收器(BroadcastReceiver)----用户接收广播;

    3.意图内容(Intent)----用于保存广播相关信息的媒介。

      Broadcast是一种广泛的应用在应用程序之间传输信息的机制。而BroadcastReceiver是对发出来的Broadcast进行过滤并影响的组件。

      注册BroadcastReceiver有两种方式:静态注册和动态注册。

      方式一:静态的在AndroidManifest.xml中用receiver标签申明注册,并在标签内用intent-fiter标签注册过滤器;

      方式二:动态的在代码中先定义并设置好一个IntentFilter对象,然后在需要注册的地方调用Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果动态注册的BroadcastReceiver的Context对象被小慧时,BroadcastReceiver也就自动取消注册了。

      案例:

      java代码:

    package app.book;
    
    import android.os.Bundle;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    
    public class MainActivity extends Activity {
        ProgressBar battery;
        TextView batteryCount;
        IntentFilter intentFilter;
        
        /*发送广播:
        Intent it = new Intent();
        it.setAction(action);
        sendBroadcast(it);*/
        
        //动态注册方式
        //接收广播
        private BroadcastReceiver bcr = new BroadcastReceiver() {
            
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                // TODO Auto-generated method stub
            }
        };
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);//生命周期
            setContentView(R.layout.activity_main);//设置布局管理器
            
            battery = (ProgressBar) findViewById(R.id.myProgress);
            batteryCount = (TextView) findViewById(R.id.myText);
            battery.setMax(100);
        }
        
        @Override
        protected void onStart(){
            super.onStart();
            //注册
            intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
            registerReceiver(bcr, intentFilter);
        }
    
        @Override
        protected void onStop(){
            super.onStop();
            //取消注册
            unregisterReceiver(bcr);
        }
    }
  • 相关阅读:
    测试开发题目整理(二)
    测试开发题目整理(一)
    Python + request接口测试中Cookie和Session的获取和使用
    requests发送HTTPS请求(处理SSL证书验证)
    js ES5面向对象继承 模仿ES6
    如何使用canvas绘制椭圆,扩展非chrome浏览器中的ellipse方法
    javascript对象创建及继承
    观察者模式及事件与委托的区别-20171215内训会
    html5悬浮球效果
    文本框高度自适应不出滚动条
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2919263.html
Copyright © 2011-2022 走看看