123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package com.jyc.threegames.activity.base;
- import android.app.Dialog;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.graphics.Color;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.TextView;
- import android.widget.Toast;
- import androidx.annotation.LayoutRes;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.appcompat.widget.Toolbar;
- import com.jyc.threegames.R;
- import com.jyc.threegames.activity.AlertActivity;
- import com.jyc.threegames.activity.LoginActivity;
- import com.jyc.threegames.controller.LoginController;
- import com.jyc.threegames.net.SimpleRequest;
- import com.jyc.threegames.utils.ToastUtil;
- import java.util.Timer;
- import java.util.TimerTask;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- public abstract class BaseActivity extends AppCompatActivity {
- protected final int WATCH_LONG = 2 * 60 * 1000;
- @Nullable
- @BindView(R.id.toolbar)
- Toolbar mToolbar;
- @Nullable
- @BindView(R.id.title)
- TextView mTVTitle;
- private long mLastTimeClick = 0;
- protected boolean mNeedToWatch = false;
- private Timer mWatcher;
- private Handler mClickHandler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message message) {
- if (System.currentTimeMillis() - mLastTimeClick >= WATCH_LONG){
- AlertActivity.LAUNCH(BaseActivity.this, getAlertText());
- stopWatch();
- }
- return true;
- }
- });
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(getRootLayout());
- ButterKnife.bind(this);
- initSystemBar();
- if (mToolbar != null) {
- mToolbar.setTitle("");
- setSupportActionBar(mToolbar);
- }
- if (mTVTitle != null)
- mTVTitle.setText(getPageTitle());
- init(savedInstanceState);
- }
- @Override
- protected void onResume() {
- if (mNeedToWatch)
- startWatch();
- super.onResume();
- }
- @Override
- protected void onDestroy() {
- stopWatch();
- super.onDestroy();
- }
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- if (ev.getAction() == MotionEvent.ACTION_DOWN)
- refreshLastTimeClick();
- return super.dispatchTouchEvent(ev);
- }
- private void initSystemBar() {
- Window window = getWindow();
- window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
- }
- protected void startWatch(){
- mNeedToWatch = true;
- refreshLastTimeClick();
- mWatcher = new Timer();
- mWatcher.schedule(new TimerTask() {
- @Override
- public void run() {
- mClickHandler.sendEmptyMessage(0);
- }
- }, 0, 2 * 1000);
- }
- private void stopWatch(){
- if (mWatcher != null){
- mWatcher.cancel();
- mWatcher = null;
- }
- }
- private void refreshLastTimeClick(){
- mLastTimeClick = System.currentTimeMillis();
- }
- protected abstract @LayoutRes int getRootLayout();
- protected String getPageTitle(){
- return "";
- }
- protected String getAlertText(){
- return "";
- }
- protected void init(Bundle instance){}
- protected void doLogout(){
- if (LoginController.getInstance().isCurrentUserAdmin()){
- LoginController.getInstance().logout();
- startActivity(new Intent(BaseActivity.this, LoginActivity.class));
- finish();
- return;
- }
- Dialog loading = new ProgressDialog(this);
- loading.setTitle("正在退出登录");
- loading.show();
- new SimpleRequest<Boolean>()
- .request(this, LoginController.getInstance().canLogout(), "退出登錄失敗!請檢查網絡狀態", loading, new SimpleRequest.Executor<Boolean>() {
- @Override
- public void execute(Boolean obj) {
- if (obj != null && obj){
- LoginController.getInstance().logout();
- startActivity(new Intent(BaseActivity.this, LoginActivity.class));
- finish();
- }else
- ToastUtil.showToast(BaseActivity.this, "測試週期已開始,不可登出");
- }
- });
- }
- }
|