2017-01-30 15 views
4

Я обычно приоритетнее onBackPressed() так:onBackPressed() Best Practice/Performance

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    Intent intent = new Intent(getApplicationContext(), HomeActivity.class); 
    startActivity(intent); 
    finish(); 
} 

Только теперь я понял, что, когда я нажимаю кнопку назад с этим кодом я вижу в течение 0,5 сек белой активности при переходе ,

Тестирование немного я обнаружил, что если я использую этот код вместо этого проблема не произошло:

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(getApplicationContext(), HomeActivity.class); 
    startActivity(intent); 
    finish(); 
    super.onBackPressed(); 
} 

Какая разница между этим двумя кодовыми? Если я использую второй, все в порядке? Из-за проблемы с памятью? Thanks

ответ

2

super.onBackPressed только звонки закончить. Это не нужно, если вы звоните, завершайте себя. Просто удалите строку.

Причина, по которой вы видите визуальную разницу, заключается в том, что в одном вы заканчиваете это намерение, а затем начинаете новый, а затем начинаете новый, а затем заканчиваете это. Первый может оставить пустой экран ненадолго.

+0

Итак, нет никакой разницы между super.onBackPressed() и finish() справа? – GMX

+0

Правильно, если другой класс в вашей родословной уже не переусердствовал. Но я предполагаю, что это не так. –