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);
        }
    }
  • 相关阅读:
    C# HttpWebRequest 发送SOAP XML
    浅谈HTTP中Get与Post的区别(转)
    WebService的helloworld,服务器端与客户端的Demo(转)----自己建立的Web Project , 而不是Web Service Project,利用WSDD 自己发布
    C#操作XML(转)
    要学习的知识
    Web service是什么?
    暖式切边线和冷式切变线
    python 形状区分市控国控,颜色表示aqi等级
    Linux常用指令---grep(搜索过滤)
    Axis通过wsdd部署Web Service
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2919263.html
Copyright © 2011-2022 走看看