В чем разница между действиями и намерениями в Android?

Может ли кто-нибудь объяснить мне разницу между «активностью» и «намерением» на платформе Android?

Solutions Collecting From Web of "В чем разница между действиями и намерениями в Android?"

На очень простом языке Activity – это ваш пользовательский интерфейс и все, что вы можете сделать с пользовательским интерфейсом. Когда вы переходите с одного пользовательского интерфейса, вам нужно запустить этот новый пользовательский интерфейс с помощью Intent . Intent – это ваше событие, которое передается вместе с данными из первого пользовательского интерфейса в другой.

Умения могут использоваться и между пользовательскими интерфейсами и фоновыми службами. Также Intent передается, когда вы хотите транслировать данные во все действия и фоновые службы.

Intent живет как объект, деятельность живет с лицом и взаимодействием. Надеюсь, это было полезно.

Существующие ответы хороши, но вот действительно базовое определение двух с некоторыми ссылками.

Мероприятия

Компонент приложения для отображения пользовательского интерфейса. Класс активности – это взаимодействие всех пользовательских взаимодействий (нажатия кнопок, выбор списка). Действие указывает макет, который будет представлять его на экране.

умысел

Цель – системное сообщение. Он может транслироваться по всей системе для уведомления других приложений (или ваших собственных!) О событии или может использоваться для запроса того, чтобы система отображала новое действие.

Если все, что вы знаете о намерениях, это когда вы используете их для начала нового действия, тогда я могу понять ваше замешательство.

В простейшем случае вы начинаете новую деятельность следующим образом:

 Intent intent = new Intent(this, SomeOtherActivity.class); startActivity(intent); 

Похоже, вы начинаете свою деятельность, и деятельность, которую вы начинаете, «намерена». Но то, что вы действительно делаете, вызывает метод startActivity() и вы передаете ему контейнер, называемый намерением. Этот контейнер сообщает startActivity() что делать.

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

 Intent intent = new Intent(this, SomeOtherActivity.class); startActivity(intent); intent.putExtra("ANIMAL_TYPE", "unicorn"); intent.putExtra("ANIMAL_COLOR", "ruby"); startActivity(intent); 

Теперь, когда вы вызываете startActivity() , он смотрит на намерение и знает, что ему нужно запустить класс SomeOtherActivity . Кроме того, в классе SomeOtherActivity вы можете получить доступ к этим переданным парам ключ / значение из этого намерения следующим образом:

 Bundle extras = getIntent().getExtras(); if(extras !=null) { String animal = extras.getString("ANIMAL_TYPE"); String animalColor = extras.getString("ANIMAL_COLOR"); } 

Это разные классы, которые никоим образом не могут быть изменены. Ожидаемое использование подклассов Activity – это управление содержимым и поведением окна приложения. Intent s, с другой стороны, являются простыми структурами обмена данными, которые часто используются для запуска новых Activity и передачи данных им, но у них есть и другие виды использования.

Класс Activity заботится о создании (полноэкранного или плавающего) окна для вас, в котором вы можете поместить свои пользовательские интерфейсы, чтобы действия взаимодействовали с пользователем.

Намерения в основном используются, когда вы хотите переключиться с одного вида (т.е. на одно действие) на другое.

Когда вы находитесь в ActivityOne.class, и вы вызываете:

 Intent i = new Intent(this, ActivityTwo.class); startActivity(i); 

То ActivityTwo будет показан пользователю.