タイマーをオンに設定して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();
}
}
}