BaseActivity.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.jyc.threegames.activity.base;
  2. import android.app.Dialog;
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.graphics.Color;
  6. import android.os.Build;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.os.Message;
  10. import android.view.MotionEvent;
  11. import android.view.View;
  12. import android.view.Window;
  13. import android.view.WindowManager;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16. import androidx.annotation.LayoutRes;
  17. import androidx.annotation.NonNull;
  18. import androidx.annotation.Nullable;
  19. import androidx.appcompat.app.AppCompatActivity;
  20. import androidx.appcompat.widget.Toolbar;
  21. import com.jyc.threegames.R;
  22. import com.jyc.threegames.activity.AlertActivity;
  23. import com.jyc.threegames.activity.LoginActivity;
  24. import com.jyc.threegames.controller.LoginController;
  25. import com.jyc.threegames.net.SimpleRequest;
  26. import com.jyc.threegames.utils.ToastUtil;
  27. import java.util.Timer;
  28. import java.util.TimerTask;
  29. import butterknife.BindView;
  30. import butterknife.ButterKnife;
  31. public abstract class BaseActivity extends AppCompatActivity {
  32. protected final int WATCH_LONG = 2 * 60 * 1000;
  33. @Nullable
  34. @BindView(R.id.toolbar)
  35. Toolbar mToolbar;
  36. @Nullable
  37. @BindView(R.id.title)
  38. TextView mTVTitle;
  39. private long mLastTimeClick = 0;
  40. protected boolean mNeedToWatch = false;
  41. private Timer mWatcher;
  42. private Handler mClickHandler = new Handler(new Handler.Callback() {
  43. @Override
  44. public boolean handleMessage(@NonNull Message message) {
  45. if (System.currentTimeMillis() - mLastTimeClick >= WATCH_LONG){
  46. AlertActivity.LAUNCH(BaseActivity.this, getAlertText());
  47. stopWatch();
  48. }
  49. return true;
  50. }
  51. });
  52. @Override
  53. protected void onCreate(@Nullable Bundle savedInstanceState) {
  54. super.onCreate(savedInstanceState);
  55. setContentView(getRootLayout());
  56. ButterKnife.bind(this);
  57. initSystemBar();
  58. if (mToolbar != null) {
  59. mToolbar.setTitle("");
  60. setSupportActionBar(mToolbar);
  61. }
  62. if (mTVTitle != null)
  63. mTVTitle.setText(getPageTitle());
  64. init(savedInstanceState);
  65. }
  66. @Override
  67. protected void onResume() {
  68. if (mNeedToWatch)
  69. startWatch();
  70. super.onResume();
  71. }
  72. @Override
  73. protected void onDestroy() {
  74. stopWatch();
  75. super.onDestroy();
  76. }
  77. @Override
  78. public boolean dispatchTouchEvent(MotionEvent ev) {
  79. if (ev.getAction() == MotionEvent.ACTION_DOWN)
  80. refreshLastTimeClick();
  81. return super.dispatchTouchEvent(ev);
  82. }
  83. private void initSystemBar() {
  84. Window window = getWindow();
  85. window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
  86. }
  87. protected void startWatch(){
  88. mNeedToWatch = true;
  89. refreshLastTimeClick();
  90. mWatcher = new Timer();
  91. mWatcher.schedule(new TimerTask() {
  92. @Override
  93. public void run() {
  94. mClickHandler.sendEmptyMessage(0);
  95. }
  96. }, 0, 2 * 1000);
  97. }
  98. private void stopWatch(){
  99. if (mWatcher != null){
  100. mWatcher.cancel();
  101. mWatcher = null;
  102. }
  103. }
  104. private void refreshLastTimeClick(){
  105. mLastTimeClick = System.currentTimeMillis();
  106. }
  107. protected abstract @LayoutRes int getRootLayout();
  108. protected String getPageTitle(){
  109. return "";
  110. }
  111. protected String getAlertText(){
  112. return "";
  113. }
  114. protected void init(Bundle instance){}
  115. protected void doLogout(){
  116. if (LoginController.getInstance().isCurrentUserAdmin()){
  117. LoginController.getInstance().logout();
  118. startActivity(new Intent(BaseActivity.this, LoginActivity.class));
  119. finish();
  120. return;
  121. }
  122. Dialog loading = new ProgressDialog(this);
  123. loading.setTitle("正在退出登录");
  124. loading.show();
  125. new SimpleRequest<Boolean>()
  126. .request(this, LoginController.getInstance().canLogout(), "退出登錄失敗!請檢查網絡狀態", loading, new SimpleRequest.Executor<Boolean>() {
  127. @Override
  128. public void execute(Boolean obj) {
  129. if (obj != null && obj){
  130. LoginController.getInstance().logout();
  131. startActivity(new Intent(BaseActivity.this, LoginActivity.class));
  132. finish();
  133. }else
  134. ToastUtil.showToast(BaseActivity.this, "測試週期已開始,不可登出");
  135. }
  136. });
  137. }
  138. }