Android广播Demo
具体步骤:
1、初始化广播接收器BroadcastReceiver,接收到的广播会在该类的onReceive方法中回调
2、注册广播registerReceiver(BroadcastReceiver,IntentFilter);
3、发送广播sendBroadcast(Intent);
此demo是为了验证已经被覆盖的Activity在接收到广播时能否自己更新UI,下面是具体代码:
第一步,创建MainActivity,并初始化广播接收器BroadcastReceiver、注册广播
publicclassMainActivityextendsAppCompatActivity{privateTextViewtipTv;publicstaticfinalStringACTION_NAME="TAG_MAIN";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tipTv=(TextView)findViewById(R.id.tipTv);findViewById(R.id.gotoTv).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(MainActivity.this,SecondActivity.class);startActivityForResult(intent,100);tipTv.setText("等待接收广播。。。");}});//注册广播registerBoradcastReceiver();}//广播接收器privateBroadcastReceivermBroadcastReceiver=newBroadcastReceiver(){/***广播接收器,接收到广播的回调方法*@paramcontext*@paramintent*/@OverridepublicvoidonReceive(Contextcontext,Intentintent){Log.d("myp","===broadcastcallback===");Stringaction=intent.getAction();if(action.equals(ACTION_NAME)){//当接收到广播时,Toast会在最上层的Activity中提示,Toast.makeText(MainActivity.this,"broadcastcallback",Toast.LENGTH_SHORT).show();Stringresult=intent.getStringExtra("yaner");tipTv.setText(result);//当接收到广播时,Dialog会在接收到广播的界面提示,并且会随着该界面中的业务逻辑隐藏,//由此可见,当Activity备覆盖式,如果又出发该Activity业务逻辑的操作,会在该Activity中正常执行initDialog();Timertimer=newTimer();timer.schedule(newTimerTask(){@Overridepublicvoidrun(){if(dialog!=null&&dialog.isShowing())dialog.dismiss();}},3*1000);}}};Dialogdialog;/***初始化弹出框*/privatevoidinitDialog(){dialog=newDialog(this);dialog.setContentView(R.layout.view_dialog);dialog.show();}/***注册广播*/publicvoidregisterBoradcastReceiver(){IntentFilterfiler=newIntentFilter();//筛选条件filer.addAction(ACTION_NAME);//设置要注册的广播的标签//注册广播registerReceiver(mBroadcastReceiver,filer);Log.d("myp","===broadcastregist===");}}
第二步,创建SecondActivity,并SecondActivity里实现触发 能发送广播到
MainActivity里的广播的事件
publicclassSecondActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);findViewById(R.id.brodcastBtn).setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){IntentmIntent=newIntent(MainActivity.ACTION_NAME);mIntent.putExtra("yaner","接收广播成功!!!");//接收到广播时,携带的数据//发送广播sendBroadcast(mIntent);Log.d("myp","===broadcastsend===");}});}}
xml布局文件比较简单,就不给出了,运行效果:
1、点击按钮后,Toast提示在SecondActivity里直接提示
2、点击按钮后,在3秒内返回MainActivity,Dialog正常显示,3秒过后消失
3、点击按钮后,在3秒后返回MainActivity,Dialog已经消失
结论:被覆盖的Activity在接收到广播时能自己能更新UI
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。