原理: 发送广播 - - 关闭所有活动 - - 开启登录界面
发送广播
在需要触发强制下线的地方,发送广播通知。这样就可以将强制下线的逻辑写在广播里面,而不用受制于任何活动!
sendBroadcast(new Intent("com.custom.action.froce_offline"));
关闭所有活动、开启登录界面
接收下线广播后,通过工具类ActivityContainer关闭所有启动的活动,用弹框提示去开启登录界面!
//工具类
public class ActivityContainer {
public static List<Activity> activityList = new ArrayList<>();
public static void addActivity(Activity activity){
activityList.add(activity);
}
public static void deleteActivity(Activity activity){
activityList.remove(activity);
}
public static void finishAll(){
for (Activity activity :activityList){
//判断activity是否被干掉了
if(!activity.isFinishing()) {
activity.finish();
}
}
}
}
@Override
public void onReceive(final Context context, Intent intent) {
new AlertDialog.Builder(context)
.setTitle("提示")
.setMessage("强制下线")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//销毁所有开启的活动
ActivityContainer.finishAll();
//开启登录界面
LoginActivity.startActivity(context);
}
})
//强制弹框不能取消
.setCancelable(false)
.show();
}
具体实现可以查看demo https://github.com/chaoyangsun/forceofflinebybroadcast