鱼C论坛

 找回密码
 立即注册
查看: 2019|回复: 1

[学习笔记] Broadcast

[复制链接]
发表于 2019-11-4 12:38:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
广播使Android的四大组件之一,但也不算太难。
        发送广播需要使用Intent()方法与sendBroadcast()方法:
                Intent intent = new Intent(
                                "com.example.broadcastbestpractice.FORCE_OFFLINE");
                               sendBroadcast(intent);

        而接收广播则需要创建广播接收器的类:
                广播接收器继承BroadcastReceiver,并在其onReceive()方法中实现接收广播后我们想要进行的具体逻辑操作。
                class ForceOfflineRecevier extends BroadcastReceiver{
                @Override
                public void onReceive(final Context context, Intent intent) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(context);//使用AlertDialog.Builder构建对话框
                    builder.setTitle("Warning");
                    builder.setMessage("You are forced to be offline. Please try to login again.");
                    builder.setCancelable(false);//使用setCancelable设置对话框不可取消
                     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        //使用setPositiveButton来给对话框注册确定按钮
                        @Override
                        public void onClick(DialogInterface dialogInterface, int which) {
                            ActivityCollector.finishALL();//销毁所有活动
                            Intent i = new Intent(context,LoginActivity.class);
                            context.startActivity(i);//重新启动LoginActivity
                        }
                    });
                    builder.show();
                }
                    }

        那么广播接收器具体是如何接收发来的广播呢?:
                获取一个过滤器实例,使用addAction()为其添加一个action,这个action就是广播信号。
                再获取接收器实例,使用registerReceiver(接收器实例,过滤器实例)对该广播接收器进行动态注册,此时广播接收器就可以真正接收广播信息了。
                一般将该方法写于onCreate()或onResume()方法中:
                        protected void onResume() {
                                       // 重写了onResume用来注册ForceOfflineRecevier
                                super.onResume();
                                IntentFilter intentFilter = new IntentFilter();//获取过滤器实例
                                intentFilter.addAction("com.example.broadcastbestpractice.FORCE_OFFLINE");
                                receiver = new ForceOfflineRecevier();
                                registerReceiver(receiver,intentFilter);//使receiver具备接收
                                // com.example.broadcastbestpractice.FORCE_OFFLINE广播的功能
                            }

                不要忘记在onPause()或者onDestory()方法中写上取消注册方法:
                        unregisterReceiver(receiver);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-5 08:47:25 | 显示全部楼层
好吧,感觉不是很看得懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 18:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表