设计思路
点击强制下线的按钮,向当前处于栈顶的活动发送广播,活动的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();
}
}