Android之广播机制—本地广播

来源:互联网 发布:淘宝活动时间 编辑:程序博客网 时间:2024/05/01 23:27
本地广播:
只在程序内部进行传递的广播,发送和接收都只在本程序有效。

示例代码:

public class MainActivity extends AppCompatActivity {    private IntentFilter intentFilter;    private LocalReceiver localReceiver;    //本地广播数据类型实例。    private LocalBroadcastManager localBroadcastManager;    @Override    public void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);//获取本地广播实例。        localBroadcastManager=LocalBroadcastManager.getInstance(this);        Button button=(Button)findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent=new Intent("com.example.tangyi.receiver5.LOCAL_BROADCAST");//发送本地广播。                localBroadcastManager.sendBroadcast(intent);            }        });//新建intentFilter并给其action标签赋值。        intentFilter=new IntentFilter();        intentFilter.addAction("com.example.tangyi.receiver5.LOCAL_BROADCAST");//创建广播接收器实例,并注册。将其接收器与action标签进行绑定。        localReceiver=new LocalReceiver();        localBroadcastManager.registerReceiver(localReceiver,intentFilter);    }    @Override    public void onDestroy(){//在onDestroy()方法中取消注册。        super.onDestroy();//取消注册调用的是unregisterReceiver()方法,并传入接收器实例。        localBroadcastManager.unregisterReceiver(localReceiver);    }    class  LocalReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context,Intent intent){            Toast.makeText(context,"这是本地广播接收器",Toast.LENGTH_SHORT).show();        }    }}
本地广播是无法通过静态注册来实现的。因为静态注册是为了让程序未启动也能接收广播。本地广播是在本程序内进行
传递,肯定是已经启动了,因此也完全不需要静态注册。

1 0
原创粉丝点击