2015-10-20 2 views
4

Первый способИмеет ли значение, в каком порядке я называю finish() и startActivity()?

Intent in = new Intent(VerificationActivity.this, VerifyCode.class); 
in.putExtra("verificationCode", verificationCode); 
finish(); 
startActivity(in); 

Второй путь ...

Intent in = new Intent(VerificationActivity.this, VerifyCode.class); 
in.putExtra("verificationCode", verificationCode); 
startActivity(in); 
finish(); 

что лучше? есть ли разница?

+0

Я проверил ....... thnks ..... скажите еще, что производительность отличается или оба одинаковы .... – Android007

+1

Если бы вы проверили это, как вы сказали, вы бы уже знали. Нет, это неважно –

+0

ok .... на самом деле я хочу глубже узнать уровень системного вызова ..... но я прочитал его эффективность неэффективности в обоих случаях ..... но оба метода способ отличается .... как в ответе вашей прокомментированной ссылки [ссылка] (http://stackoverflow.com/questions/4182761/finish-old-activity-and-start-a-new-one-or-vice-versa) «Когда вы начинаете startActivity(), все, что делает, это ваше намерение в очереди событий. Фактический запуск активности происходит асинхронно в ближайшем будущем». Значит, имеет значение производительность – Android007

ответ

0

Не имеет значения, как вы их называете, startActivity() и finish() не будут происходить мгновенно. Ваш метод всегда будет заканчивать весь код внутри своего блока перед закрытием, если вы не вызовете возврат.

+0

документировано где-нибудь? –

+0

Я не могу найти специфику на данный момент. Но экземпляр не будет закрыт, если блок кода все еще работает. Если вам нужно проверить, что что-то было выполнено, добавьте логику внутри onDestroy(), чтобы узнать, действительно ли было выполнено ваше беспокойство. Calling finish() сообщает только о завершении операции, когда она будет готова и очищена. – vguzzi

1

finish() звонок по телефону onStop() Текущая деятельность и startActivity(i) перемещает новый intent i в очередь событий. и активность запускается, когда она выведена из очереди событий. в первом случае, если очередь событий остановлена, вы увидите, что текущая активность исчезает, и через какое-то время, когда намерение начнет свою очередь, активность появится из ниоткуда. но благодаря планированию Android это почти никогда не происходит.

+0

Возможно ли, что 'finish()' приводит к уничтожению текущего экземпляра активности до 'startActivity (in);' происходит? –

Смежные вопросы