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中*和**的区别
    Python中str、list、numpy分片操作
    Python中bisect的使用方法
    Python中__str__和__repr__的区别
    Python中函数参数类型和参数绑定
    C++中explicit
    C++中const
    自动识别 URL
    .net中activex的替代技术:winform control(一)
    vs2005包加载有误的解决方法
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2919263.html
Copyright © 2011-2022 走看看