实现强制下线功能-广播实践案例
实现强制下线功能的需求分析如下:
- 1. 在应用任何界面都能接收到强制下线的对话框警告,并提示重新登录。----使用广播实现
- 2. 当警告的对话框出现的时候,后台的所有的activity都需要强制关闭。----创建一个ActivityCollector来管理所有活动,可以随时随地退出程序,跟踪正在运行的活动。
- 3. 需要一个能够触发强制下线的广播 ----在登录页面后主页面中设计按钮发送广播
代码操作如下:
public class ActivityCollector {
public static List<Activity> activityList= new ArrayList<>();
public static void addActivity(Activity activity){
activityList.add(activity);
}
public static void removeActivity(Activity activity){
activityList.remove(activity);
}
public static void FinishAll(){
for(Activity activity: activityList){
if(activity.isFinishing()){
activity.finish();
}
}
}
}
2. 创建一个BaseActivity 类继承自AppCompatActivity,这个类虽然继承AppCompatActivity,但它并不需要在AndroidManifest.xml中进行注册,所以创建一般的java类即可。
广播接收器实现和注册:
public class BaseActivity extends AppCompatActivity {
private Receiver forceOfflineReceiver;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
}
@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter= new IntentFilter
("com.begin.broadcastbestpractice.MY_BROADCAST");
forceOfflineReceiver=new Receiver();
registerReceiver(forceOfflineReceiver,intentFilter);
}