广播的应用--强制下线功能

设计思路

点击强制下线的按钮,向当前处于栈顶的活动发送广播,活动的onreceive函数中弹出一个AlertDialog。

新建父类

新建一个活动的父类,并在父类中注册广播接收机

建活动管理类

新建一个活动管理类ActivityCollctor,来终止所有的已开展的活动。

代码的实现

活动管理类`

public class ActivityCollector {
    private static List<Activity> activityList = new ArrayList<>();
    public static void addActivity(Activity activity){
        if (activity != null){
            activityList.add(activity);
        }
    }
    public static void removeActivity(Activity activity){
        activityList.remove(activity);
    }
    public static void finish(){
        for (Activity activity: activityList
             ) {
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
    }
}

##父类活动

public class BaseActivity extends AppCompatActivity {
    private ForceOffLineReceiver forceOffLineReceiver;//null
    private static final String TAG = "BaseActivity";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //显示当前在哪一个活动
        Log.d("BaseActivity", this.getClass().getName());
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction("FORCE_OFFLINE");
        forceOffLineReceiver = new ForceOffLineReceiver();
        registerReceiver(forceOffLineReceiver,filter);

    }

    @Override
    protected void onPause() {
        super.onPause();
        //重置回去。
       if (forceOffLineReceiver != null){
           unregisterReceiver(forceOffLineReceiver);
           forceOffLineReceiver =null;
       }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

广播注册器

public class ForceOffLineReceiver extends BroadcastReceiver {



    @Override
    public void onReceive(final Context context, Intent intent) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Warning");
    builder.setMessage("你被强制下线");
    builder.setCancelable(false);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ActivityCollector.finish();
            Intent intent1 = new Intent(context, Login.class);
            context.startActivity(intent1);

        }
    });
    builder.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值