Andriod一段时间未操作页面,系统自动登出

时间:2024-05-12 16:33:32

功能描述:

APP在公共的设备上运行,出于安全考虑,当登录的用户在超过一定时间内没有做任何操作,

则系统自动登出,用户如需重新操作APP,则需要重新登录 。

第一步:创建一个BaseActivity

/**
* 创建时间: 2019-02-26
* 创建人:陈松
* 说明:
*/
public class BaseActivity extends FinalActivity {
public Context context; //运行上下文 @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startAD();
} private Handler handler = new Handler();
private long time = * * ; //设置限时时间:5分钟 @Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
handler.removeCallbacks(runnable);
break;
case MotionEvent.ACTION_UP:
startAD();
break;
}
return super.dispatchTouchEvent(event);
} private Runnable runnable = new Runnable() {
@Override
public void run() {
//超时要执行的内容(自定义),此片弹窗提示,并跳转页面
new ShowDialog(context, R.style.dialog, "当前登录已失效,请重新登录!", new ShowDialog.OnCloseListener() {
@Override
public void onClick(Dialog dialog, boolean confirm) {
Intent intent=new Intent(context, LoginActivity.class);
startActivity(intent);
finish();
}
}).setTitle("温馨提示").show();
}
}; public void startAD() {
handler.removeCallbacks(runnable);
handler.postDelayed(runnable, time);
} @Override
protected void onDestroy() {
super.onDestroy();
}
//endregion
}

第二步:在主操作的Activity中extends BaseActivity

public class MenuActivity extends BaseActivity {

}

第三步:在MenuActivity的onCreate方法中,给BaseActivity 的context属性赋值

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_menu_main); context=MenuActivity.this;
}

完毕收工~~~~~