1

我对 Android 非常陌生,但在过去的两三周里,我已经设法弄清楚它的大部分内容以及事情是如何运作的。但是,有一件事仍然困扰着我 - 活动和简单表单之间的基本区别是什么?好吧,我知道 Android 没有“表单”之类的东西,但我的意思是元素的全屏布局,它有一个底层类,它的所有功能都在其中执行,而不是在进程范围的类中执行(准确地说是活动)。

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

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

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

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

所以简单地说 - 我是否遗漏了 Android 哲学中的某些内容?因为我很确定对应用程序中的每个表单都使用单独的 Activity(结果是单独的进程)是一种矫枉过正的做法。如果确实如此,而且每个人都知道——为什么 Android 没有任何实质性的表单切换机制?

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

4

1 回答 1

4

活动不会在单独的进程中产生(除非您明确告诉它)。APK 中的所有内容都将在您的进程中生成。即使另一个应用程序出于某种原因正在使用您的活动。

您可以通过不在清单中为其分配任何意图过滤器来使您的 Activity “有效”地对您的应用程序私有。

对于给出的示例,表单等同于活动。当您深入研究 Android 时,这并不是一个普遍的说法,但对于初学者来说,这是一个不错的类比。另一个常见的类比是,活动更像是网页,而不是传统的基于表单的 UI。

于 2012-04-19T16:31:05.827 回答