思路:首先进入登录界面,输入账号和密码后登陆到主界面,在主界面通过点击按钮发送一条强制下线的广播,广播接收者收到广播后重新进入登陆界面。
新建项目Broadcast03。强制下线功能需要先关闭所有的活动,然后返回到登录界面。所以先创建一个ActivityCollector类用来管理所有的活动:
公开课ActivityCollector { 公共静态List活动=new ArrayList (); 公共静态孔隙addActivity(活动活动){ activities.add(活动); } 公共静态孔隙removeActivity(活动活动){ activities.remove(活动); } 公共静态孔隙finishAll () { (活动活动:活动){ 如果(! activity.isFinishing ()) { activity.finish (); } } } } >之前 在这个类中定义了三个方法,分别用来添加活动,移除活动与关闭所有活动,然后新建一个BaseActivity类作为其他所有类的父类:
公开课BaseActivity延伸活动{ @Override 保护空白> & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android " android: layout_width=" match_parent " android: layout_height=" match_parent " 面向android:=按怪薄北? LinearLayout & lt; android: layout_width=" match_parent " android: layout_height=" wrap_content " 面向android:="水平"比; & lt; TextView android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: layout_gravity="中心" android: layout_marginLeft=" 10 dp” android:重力="中心" android:文本="帐户:“ android: textSize=?6 dp/比; EditText & lt; android: id=癅 + id/et_account” android: layout_width=" 0 dp” android: layout_height=" wrap_content " android: layout_margin=" 10 dp” android: layout_weight=" 1 " android:提示="请输入账户”/比; & lt;/LinearLayout> LinearLayout & lt; android: layout_width=" match_parent " android: layout_height=" wrap_content " 面向android:="水平"比; & lt; TextView android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: layout_gravity="中心" android: layout_marginLeft=" 10 dp” android:重力="中心" android:文本="密码:" android: textSize=?6 dp/比; EditText & lt; android: id=癅 + id/et_password” android: layout_width=" 0 dp” android: layout_height=" wrap_content " android: layout_margin=" 10 dp” android: layout_weight=" 1 " android:提示="请输入密码" android: inputType=" numberPassword "/比; & lt;/LinearLayout> & lt;按钮 android: id=癅 + id/bt_login” android: layout_width=" 120 dp” android: layout_height=" wrap_content " android: layout_gravity=" center_horizontal " android:文本="登录"/比; & lt;/LinearLayout> >之前编写登录活动。新建LoginActivity继承自BaseActivity,实现登录的逻辑,这里设置当帐号为admin,密码为123456时才能登陆成功。
公开课LoginActivity延伸BaseActivity { 私人EditText accountEdit; 私人EditText passwordEdit; 私人按钮登录; @Override 保护空白> & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; RelativeLayout xmlns: android=" http://schemas.android.com/apk/res/android " xmlns:工具=" http://schemas.android.com/tools " android: id=癅 + id/activity_main” android: layout_width=" match_parent " android: layout_height=" match_parent " android: paddingBottom=" @dimen/activity_vertical_margin” android: paddingLeft=" @dimen/activity_horizontal_margin” android: paddingRight=" @dimen/activity_horizontal_margin” android: paddingTop=" @dimen/activity_vertical_margin” 工具:上下文=癱om.beijing.broadcast03.MainActivity”比; & lt;按钮 android: id=癅 + id/bt_force_offline” android: layout_width=" match_parent " android: layout_height=" wrap_content " android:文本=胺⑺屠胂卟シ拧?比; & lt;/RelativeLayout> >之前MainActivity界面点击按钮发送广播的逻辑:
Android运用BroadcastReceiver实现强制下的线