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);
        }
    }
  • 相关阅读:
    禁止用户打开HTML页面调试
    Git 忽略提交 .gitignore
    PHP日期时间处理
    HTML页面中JavaScript能获取到的各种屏幕大小信息
    移动浏览器H5页面通过scheme打开本地应用
    Python爬虫利器:Beautiful Soup
    MySQL分页查询优化
    JavaScrpit中异步请求Ajax实现
    PHP反射机制
    CentOS下nginx php mysql 环境搭建
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2919263.html
Copyright © 2011-2022 走看看