Android--Android中使用广播BroadcastReceiver进行用户强制下线功能

利用广播BroadcastReceiver实现登录强制下线功能

在这里面登录界面里面的用户名和密码为默认的“admin””123456” 可以在LoginActivity里面进行修改,该例子只是简单的说明怎么样BroadcastReceiver进行强制性的下线。

原理

在应用程序中经常会遇到强制下线的情况,比如qq在别处登录,本机的你就被强制下线了。其实强制下线的原理很简单,就是弹出一个对话框让你没办法进行去他的操作,只能点击对话框的“确定”按钮进行重新登录验证身份,但是我们被通知需要强制下线的时候可能处于任何一个界面,肯定不能在没一个界面都写一个对话框。此时就用到了广播。在本例中点击button后触发广播,然后提交给ForceOfflineReceiver类进行接受广播,进行销毁所有的活动,完成用户强制性下线

1、首先创建一个Activity管理类“ActivityCollector”

在这里面进行Activity的添加 删除 和销毁所有,能够在后面强制下线时,销毁所有的Activity,只显示一个对话框

package com.example.chencong.broadcastbestpractive;

import android.app.Activity;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by chencong on 2017/3/16.
 */
public class ActivityCollector {
   
    /**
     * 创建一个Activity类来管理所有的活动
     */

    public static List<Activity> activities = new ArrayList<Activity>();

    /**
     * 定义泛型数组activities 添加activity活动的方法addActivity
     * @param activity
     */
    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    /**
     * 移除activity活动的方法removeActivity
     * @param activity
     */
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }

    /**
     * 遍历所有活动将其停止完成
     */
    public static void findAll(){
        for (Activity activity: activities) {
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
    }

}

2、然后创建一个基类BaseActivity

之所以创建这个基类,是为了方便对所有的Activity进行管理(添加 删除 销毁所有),因为在后面创建的Activity是继承此Activity的,能够保证在创建的时候就已添加到ActivityCollector中。

package com.example.chencong.broadcastbestpractive;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

/**
 * 定义父类BaseActivity
 */
public class BaseActivity extends AppCompatActivity {
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //创建活动时,将其加入管理器中
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //销毁活动时,将其从管理器中移除
        ActivityCollector.removeActivity(this);
    }
}

3、一个简单的登录界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout x
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值