setContentView (R.Layout.main) против startActivity (намерение), что более распространено? - PullRequest
3 голосов
/ 11 апреля 2011

Скажите, пожалуйста, разницу между использованием startActivity(intent) и setContentView(R.Layout.main)
Что предпочтительнее и в каких условиях следует использовать?
Я думаю, что когда нам нравится выполнять какие-либо действия, мы используем startActivity(intent) и просто для перехода на другую страницу мы используем setContentView(R.Layout.main)

Ответы [ 3 ]

6 голосов
/ 18 августа 2011

Если вы используете startActivity, в onCreate новой активности вы также установите contentView ().Таким образом, с точки зрения времени, setContentView один быстрее, так как он не запускает новое действие.Следовательно, ваше приложение будет отображать новый экран быстрее ...

С другой стороны, если вы вызываете startActivity, это действие помещается в стек, поэтому вы можете вернуться назад, нажав кнопку возврата.Используя setContentView, вы должны вручную настроить кнопку для возврата к предыдущему макету ...

В зависимости от типа приложения, вы должны определить, какое из них лучше для вас.Например, в исходном коде Chrome-to-phone показано, что Google использует setContentView для завершения фазы установки приложения.Это быстрее, и они поместили кнопки назад в нижней части экрана, чтобы вернуться назад.Нажатие физической кнопки назад остановит активность.Используя этот подход, они используют одно действие для нескольких экранов, чтобы собрать всю информацию, необходимую для завершения установки.

После завершения установки Google переключается на методы startActivity, чтобы выполнить различные действия.Здесь приложение использует различные действия для различных задач, которые могут выполнять пользователи.Каждое занятие - это отдельное занятие, с кнопкой «назад», позволяющей быстро переключаться между ними.

Надеюсь, это указывает вам правильное направление

0 голосов
/ 29 июня 2011

Они очень разные, но, исходя из вашего вопроса, я предположил, что вы пытаетесь сделать то же самое с ними обоими, и это кажется возможным. Однако вы должны учитывать, что setContentView(R.Layout.main) будет отменять регистрацию предыдущих слушателей, которые были установлены в этом contentView, если вы перемещаетесь назад и вперед, startActivity(intent) будет более предпочтительным, если у вас есть активные слушатели и вы хотите что-то интерактивное. Есть и другие лучшие подходы, которые будут зависеть от того, что вы пытаетесь сделать.

0 голосов
/ 11 апреля 2011

startActivity (намерение), как следует из названия, запускает новое действие. Теперь это действие использует setContentView(xml);, чтобы установить макет xml для этого действия. Теперь вопрос в том, как начинается первое действие, потому что мы не вызываем startActivity (намерение) для первого действия.

Ответ на этот вопрос находится в вашем файле манифеста. Сначала вызывается ваша активность Launcher в манифесте, и она устанавливает вид компоновки, как указано в соответствующих файлах jave setContentView(R.layout.main);

...