Android中的活动和意图有什么区别?

Rub*_*uby 38 android android-intent android-activity

任何人都可以向我解释Android平台上"活动"和"意图"之间的区别吗?

Sid*_*rth 54

用非常简单的语言,Activity是您的用户界面以及您可以使用用户界面执行的任何操作.当您从一个用户界面移动时,需要使用一个用户界面启动该新用户界面Intent.将Intent您的事件与第一个用户界面中的数据一起传递给另一个用户界面.

意图也可以在用户界面和后台服务之间使用.Intent当您想要将数据广播到所有活动和后台服务时,也会传递一个.

Intent生活作为一个对象,活动与面孔和互动生活.希望它有所帮助.


Gus*_*dor 23

现有答案很好,但这里有两个链接的真正基本定义.

活动

用于显示用户界面的应用程序组件.活动类是处理所有用户交互的位置(按下按钮,列表选择).活动指定在屏幕上表示它的布局.

意图

意图是系统消息.它可以在系统周围广播以通知事件的其他应用程序(或您自己!),或者它可以用于请求系统显示新活动.

  • 使用“am”(即活动管理器)启动“Activity”和启动“Intent”有什么区别。 (2认同)

Hal*_*alR 18

如果您对Intent的所有了解,就是当您使用它们开始一项新活动时,那么我就能理解您的困惑.

在最简单的情况下,您开始这样的新活动:

Intent intent = new Intent(this, SomeOtherActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

确实看起来你正在开始一项活动,你开始的活动是"意图".但是你真正在做的是调用方法,startActivity()并且你传递一个名为intent的容器.那个容器告诉startActivity()我该怎么做.

将数据传递给新活动时,可以更清楚地看到它

Intent intent = new Intent(this, SomeOtherActivity.class);
startActivity(intent);
intent.putExtra("ANIMAL_TYPE", "unicorn");
intent.putExtra("ANIMAL_COLOR", "ruby");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

现在,当你打电话时startActivity(),它会查看意图并知道它需要启动SomeOtherActivity课程.此外,在SomeOtherActivity类中,您可以从intent访问那些传递的键/值对,如下所示:

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