• Android 广播机制 BroadCastReceiver


    1.注意广播发起的动作,以及需要在AndroidMainfest.xml文件中去注册这个广播,并且这个广播需要用intent-filter进行过滤。 

    2.系统级的广播,调用一样,只是需要在AndroidMainfest.xml文件中去注册这个广播,并且添加系统级过滤条件。 

    3.广播也可以在代码中注册,但需要注意的是注册的同时不要忘记去注销这个广播:

    一般是在Activity.onResume中去注册这个广播:

    IntentFilter filter = new IntentFilter();

    BroadcastReceiver receiver = new BroadcastReceiver();

    registerBroadcast(receiver,filter); 

    一般是在Activity.onPause中去注销这个广播

    unRegisterBroadcast(receiver); 

    另外广播尽量在代码中注册与销毁,这样可以节省设备电池的使用,如果注册在AndroidMainfest.xml中,则这个广播一直存在,且不便于管理,耗电。 

    package com.king.android.controls;

    import com.king.android.R;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    /**

     * 描述:发起广播实例
     *  * 作者:Andy.Liu
     * 时间: 2012-7-18  下午11:57:20
     **/
    public class BroadCastReceiverActivity extends Activity {
        public static final String MY_BROADCAST ="com.king.android.MY_BROADCAST";
        public static final String MY_WORD ="myword";
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button btnSend = (Button) findViewById(R.id.btn_voice);
            btnSend.setText("发广播");
            btnSend.setVisibility(View.VISIBLE);
            btnSend.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent();
                    intent.setAction(MY_BROADCAST);
                    intent.putExtra(MY_WORD, "my name is kobe");
                    sendBroadcast(intent);
                }
            });
        }
    }




    package com.king.android.controls;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;

    /**

     * 描述:接收广播
     * 作者:Andy.Liu
     * 时间: 2012-7-18  下午11:58:14
     **/
    public class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            String msg = intent.getStringExtra(BroadCastReceiverActivity.MY_WORD);
            Toast.makeText(context, "已经接收广播了============="+msg,Toast.LENGTH_LONG).show();
        }
    }

  • 相关阅读:
    JAVA面试基础
    扔硬币问题
    随机数生成随机数
    囚犯猜帽子问题
    十道智力题(三)
    十道智力题(二)
    十道智力题(一)
    lintcode:排颜色 II
    机器学习中的几个常见概念(持续更新中......)
    如何打印一棵树(Java)
  • 原文地址:https://www.cnblogs.com/liuzenglong/p/2598449.html
Copyright © 2020-2023  润新知