У меня есть этот кодприложений вызывает OnPause(), когда я звоню super.finish()
@Override
protected void onResume() {
super.onResume();
if (Config.SPLASH_ENABLED)
{
mHandler = new Handler();
mHandler.postDelayed(mRunnable, SPLASH_DISPLAY_LENGTH);
}
else
{
doLogin();
}
}
Так что, когда я нажимаю кнопку назад он закрыл первое действие, а затем начинается второй, так что я могу начать этот приложение более 1 в одно и то же время. Затем я решил переопределить метод onBackPressed()
.
@Override
public void onBackPressed() {
mHandler.removeCallbacks(mRunnable);
super.finish();
}
Это не помогло. После Переопределения onPause()
метода как этого
@Override
protected void onPause() {
mHandler.removeCallbacks(mRunnable);
super.onPause();
}
он работал, но я действительно не могу понять. Почему это работает после переопределения метода onPause()
?
Но если я вызову removeCallbacks() для обработчика в onBackPressed(), то почему он начинает вторую активность? –
сколько стоит SPLASH_DISPLAY_LENGTH? возможно, это маленький, а иногда вы можете нажать клавишу до того, как будет выполнено действие потока. – Narkha
Это равно 1500 миллисекундам. Это нормально? –