我设置了一个计时器,AccountActivity.class
以确保用户不会按下主页按钮,否则将开始倒计时以注销用户或用户锁定他的屏幕。
但是现在我因为onPause
方法而面临一个问题。当我的用户单击调用该getaccounttask()
方法的按钮并将我的用户重定向到 时AccountInformationActivity.class
,该onPause
方法也被激活并且计时器开始倒计时。
是否有任何解决方案可以防止该onPause
方法倒计时或我的计时器被取消AccountInformationActivity.class
?
我试图在我的意图开始之前取消计时器,但仍然不起作用。
我也尝试过使用处理程序,但遇到了同样的问题,我仍在尝试了解 Android 是如何完全工作的,因此非常感谢您的帮助或解决方案。
public class AccountActivity extends AppCompatActivity {
private Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
}
private class getaccounttask extends AsyncTask<String, Void, String>
{
@Override
protected String doInBackground(String... urlaccount)
{
StringBuilder result = new StringBuilder();
try
{
//My Codes
}
catch (Exception e)
{
e.printStackTrace();
}
return result.toString();
}
@Override
protected void onPostExecute(String result)
{
Intent intent = new Intent();
intent.setClass(getApplicationContext(), AccountInformationActivity.class);
startActivity(intent);
}
}
@Override
protected void onPause() {
super.onPause();
timer = new Timer();
Log.i("Main", "Invoking logout timer");
LogOutTimerTask logoutTimeTask = new LogOutTimerTask();
timer.schedule(logoutTimeTask, 300000); //auto logout in 5 minutes
}
@Override
protected void onResume() {
super.onResume();
if (timer != null) {
timer.cancel();
Log.i("Main", "cancel timer");
timer = null;
}
}
private class LogOutTimerTask extends TimerTask {
@Override
public void run() {
//redirect user to login screen
Intent i = new Intent(AccountActivity.this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();
}
}
}