Android运用BroadcastReceiver实现强制下的线

  

思路:首先进入登录界面,输入账号和密码后登陆到主界面,在主界面通过点击按钮发送一条强制下线的广播,广播接收者收到广播后重新进入登陆界面。

  

新建项目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实现强制下的线