首页 > 作文

《第一行代码》阅读笔记(十九)——广播的最佳实践(强制下线功能)

更新时间:2023-04-04 00:49:34 阅读: 评论:0

这里笔者就不重复书籍上面的话了,作者的表达十分凝练和清晰,主要说下笔者自己的感悟。学习到这里的时候笔者认为广播的存在就是打破显式intent传播的局限性,显式intent只能Activity之间互相传递,肯定是不满足我们的需求的。如果想要系统和APP,或者一个APP和另一个APP,甚至一个APP中不是简单的跳转关系都可以使用广播。例如本例中,强制下线这个功能不是某一个Activity和LoginActivity之间的传递,而是任何一个Activity触发这个功能都需要跳转到LoginActivity,我们当然不能给每个Activity写个actionStart,所以我们就提前设置好接收广播后的操作,就是跳转到LoginActivity,在需要的时候发送这条广播。其实不难发现广播和intent之间联系紧密。废话不多说,让我们来看看这个项目吧。

这里笔者是看了一遍书,然后自己敲的,遇到不会的再去看看书。所以和书籍上面有的命名不太一致,其实也比较推荐大家使用这种方法,而不是盲目的对着敲。

第一步:回顾

因为需要退出所有程序,所以大家一起回顾下第二章活动最佳实践的BaActivity和ActivityCollection。这里就不废话了

第二步:登录界面

画个这样的页面,书上说是自动生成,还是别了,因为现在的AS和书上的版本已经差挺多的了,生成出来一大堆没有用的。

第三步:修改LoginActivity

 btn.tOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {       民族英烈的故事         String urname = accountEdit.getText().toString();                String password = passwordEdit.getText().toString();                if (urname.equals("admin") && password.equals("123456")) {                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);                    startActivity(intent);                }el {                    Toast.makeText(LoginActivity.this, "账号密码错误!", Toast.LENGTH_SHORT).show();                }            }        });

其他的不说了,点击登录按钮后,首先获取EditText的内容,然后赋值给urname和password。之后就是一个判断,如果用户名是admin并且密码是123456的话,跳转到主页面,如果不是弹出一个Toast。

第四步:编辑主页面和修改MainActivity

public class MainActivity extends BaActivity {    private Button btn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        tContentView(R.layout.activity_main);        btn = findViewById(R.id.btn);        btn.tOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent("com.firstcode.broadcasttestpractice.FORCE_OFFLINE");                ndBroadcast(intent);          考试失败  }        });    }}

很简单,就是点击发送一个广播。

第五步:接收广播
既然发出来,就一定要接收,怎么接收呢?在BaActivity中添加下面的代码

 private offlineBr助理物流师考试oadcastReceiver receiver;...    @Override    protected void onResume() {        super.onResume();        IntentFilter intentFilter = new IntentFilter();        intentFilter.addAction("com.firstcode.broadcasttest服装厂招工启事practice.FORCE_OFFLINE");        receiver = new offlineBroadcastReceiver();        registerReceiver(receiver, intentFilter);    }    @Override    protected void onPau() {        super.onPau();        if (receiver != null) {            unregisterReceiver(receiver);            receiver = null;        }    }...    class offlineBroadcastReceiver extends BroadcastReceiver {        @Override        public void onReceive(final Context context, Intent intent) {            AlertDialog.Builder builder = new AlertDialog.Builder(context);            builder.tTitle("Warning");            builder.tMessage("You are forced to be offline. Plea try to login again");            builder.tCancelable(fal);            builder.tPositiveButton("OK", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    ActivityCollection.finishAll();                    Intent intent1 = new Intent(context, LoginActivity.class);                    context.startActivity(intent1);                }            });            builder.show();        }    }

和之前的动态注册都是差不多的,首先声明一个内部类,重写onReceive方法,该方法内就是接收到广播后的操作。本案例中是弹出了一个AlertDialog对话框。并且设置不能取消,同时添加一个按钮,这个按钮的功能就是关闭所有Activity,然后再跳转回LoginActivity。然后在Activity的声明周期中的resume注册这个2013湖北高考分数线接收器,在pau的时候取消注册。

本文地址:https://blog.csdn.net/SafeVidulInfo/article/details/107551031

本文发布于:2023-04-04 00:49:32,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/9f9fb860d597c7e55285a4872a4a1228.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:《第一行代码》阅读笔记(十九)——广播的最佳实践(强制下线功能).doc

本文 PDF 下载地址:《第一行代码》阅读笔记(十九)——广播的最佳实践(强制下线功能).pdf

标签:笔者   跳转到   就不   按钮
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图