被通知强制下线时,只需在界面上弹出一个弹出框,来返回到登录页面。
https://github.com/qiangsongAndroid/ActivityCollector 源码下载
1.创建ActivityCollector 类用于管理所有活动。
public class ActivityCollector {
public static List activities = new ArrayList<>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
2.创建BaseActivity 作为所有活动类
public class BaseActivity extends AppCompatActivity {
private ForceOfflineReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
ActivityCollector.addActivity(this);//添加所有继承BaseActivity的类
}
@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.administrator.activitycollector.FORCE_OFFLINE");//动态注册广播(前缀改为自己的包名)
receiver = new ForceOfflineReceiver();
registerReceiver(receiver,intentFilter);
}
@Override
protected void onPause() {
super.onPause();
if (receiver!=null){
unregisterReceiver(receiver);
receiver =null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
//创建广播接收器来销毁所有广播
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.finishAll();
Intent intent = new Intent(context,LoginActivity.class);
context.startActivity(intent);
}
});
builder.show();
}
}
}
3.创建登录页面
public class LoginActivity extends BaseActivity {
private EditText accountEd;
private EditText passwordEd;
private Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
accountEd = (EditText) findViewById(R.id.account);
passwordEd = (EditText) findViewById(R.id.password);
login = (Button) findViewById(R.id.button);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String account = accountEd.getText().toString();
String password = passwordEd.getText().toString();
if (account.equals("admin")&&password.equals("123")){
startActivity(new Intent(LoginActivity.this,MainActivity.class));
finish();
}else{
Toast.makeText(LoginActivity.this,"用户名密码错误!",Toast.LENGTH_SHORT).show();
}
}
});
}
}
4.创建主页面
package com.example.administrator.activitycollector;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button offline = (Button) findViewById(R.id.offline);
offline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.administrator.activitycollector.FORCE_OFFLINE");
sendBroadcast(intent);
}
});
}
}