Android中的活动和简单表单之间的根本区别是什么?

时间:2012-04-19 16:09:04

标签: android forms view android-activity

我对Android很陌生,但在过去的两三个星期里,我已经设法弄清了它的大部分内部以及它是如何工作的。 然而,有一件事仍然困扰着我 - 活动和简单形式之间的基本区别是什么?好吧,我知道Android没有“形式”这样的东西,但是我指的是具有底层类的元素的全屏布局,其所有功能都在其中执行,而不是在整个流程类中执行(活动,确切地说。)

只要我理解,Activity是一个单独的进程,由OS实例化以执行一些基本独立于整个应用程序的操作。这也意味着我们只能运行应用程序的一个活动,它仍然可以执行所有功能而无需加载整个应用程序。例如,如果我们有一个电影播放器​​也可以将电影从一个编解码器转换为另一个编解码器,我们可以将该功能作为单独的Activity实现,这样其他应用程序(如文件管理器)也可以使用只那个Activity,而不是整个应用程序。

这看起来非常简单。问题是 - 为什么每个人都使用单独的活动来实现不能与应用程序分离的功能?换句话说,人们通常使用活动,我认为在同一过程中简单的形式会更合适。例如,我看到人们使用单独的Activity来处理应用程序设置等事情,显然不会在应用程序设置之外启动,或者编辑特定于应用程序的数据,这些数据也不会在应用程序外部完成,因为要编辑的数据应该从应用程序只知道的列表中选择。

根据我的经验,另一个例子 - 单位转换器应用程序。它有一个带有GridView单位类别的主菜单,每个类别都有一个单位列表,通过点击任何单位,我们有一个'计算器'表单,用于输入我们想要转换的值。如果我一直这样做,就像每个人都建议我有三个活动 - 一个用于主菜单,一个用于单位列表,一个用于输入值。但为什么?为什么我要将这三个活动中的任何一个与应用程序分开?如果我想启动主菜单Activity - 那么,为什么不启动整个应用程序呢?如果我只想要一个单位列表 - 再次,只需启动整个应用程序,它就不像某个Facebook客户端将在压力单位之间转换值(因为单位列表一次只涵盖一个类别)。并且启动计算器的活动根本不起作用,因为它应该返回到列表以执行转换,并且您没有启动列表活动。

无论如何,即使我错了,人们明智地使用它,但仍然存在一个问题,即Android SDK并不像我以前那样为表单提供任何支持。是的,有像ViewAnimator,ViewSwitcher等东西。但他们所做的只是在他们的位置切换布局,而这几乎不能在表格之间切换。因此,至少接近该功能的唯一选择是使用活动。我们又回到了广场。

简而言之 - 我是否遗漏了Android哲学中的一些东西?因为我很确定为应用程序中的每个表单使用单独的Activity(以及一个单独的进程)是一种过度杀伤力。如果它确实存在并且每个人都知道 - 为什么Android没有任何实质性的形式转换机制?

提前感谢您对此问题的任何澄清。

1 个答案:

答案 0 :(得分:4)

活动不是在单独的进程中生成的(除非您明确告诉它)。您的APK中的所有内容都将在您的流程中生成。即使其他应用程序出于任何原因使用您的Activity。

您可以通过不在清单中为其分配任何intent-filter来使您的“活动”“有效”为您的应用程序。

对于给出的示例,表单等于活动。当你深入研究Android时,这不是一个普遍的陈述,但对于初学者而言,这是一个相当不错的类比。另一个常见的类比是,活动更像是网页,而不是传统的基于形式的UI。