实现强制下线功能-广播实践案例

实现强制下线功能-广播实践案例


实现强制下线功能的需求分析如下:


  • 1. 在应用任何界面都能接收到强制下线的对话框警告,并提示重新登录。----使用广播实现
  • 2. 当警告的对话框出现的时候,后台的所有的activity都需要强制关闭。----创建一个ActivityCollector来管理所有活动,可以随时随地退出程序,跟踪正在运行的活动。
  • 3. 需要一个能够触发强制下线的广播 ----在登录页面后主页面中设计按钮发送广播

代码操作如下:


1. 创建一个普通的java 类ActivityCollector.java用来管理应用的所有activity。

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类即可。

广播接收器实现和注册:

因为需要在应用任何界面都要能接收到强制下线的广播,而且是针对任何一个正在显示的界面(也就是出于栈顶的状态),所以设计思路是:让所有activity都继承baseActivity,并且在onResume()和onPause()方法中注册和注销广播接收器。

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);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值