我对 Android 非常陌生,但在过去的两三周里,我已经设法弄清楚它的大部分内容以及事情是如何运作的。但是,有一件事仍然困扰着我 - 活动和简单表单之间的基本区别是什么?好吧,我知道 Android 没有“表单”之类的东西,但我的意思是元素的全屏布局,它有一个底层类,它的所有功能都在其中执行,而不是在进程范围的类中执行(准确地说是活动)。
据我了解,Activity 是一个单独的进程,由操作系统实例化以执行一些基本独立于整个应用程序的操作。这也意味着我们只能运行应用程序的一个活动,它仍将执行其所有功能,而无需加载整个应用程序。例如,如果我们有一个电影播放器也可以将电影从一种编解码器转换为另一种,我们可以将该功能实现为单独的 Activity,以便其他应用程序(如文件管理器)也能够仅使用该Activity 在编解码器之间转换电影活动,而不是整个应用程序。
这似乎非常简单。问题是 - 为什么每个人都使用单独的活动来实现无法与应用程序分离的功能?换句话说,人们通常使用我认为在同一流程中使用简单表单更合适的活动。例如,我看到人们使用单独的 Activity 来处理应用程序设置之类的事情,这显然不会在应用程序本身之外启动,或者编辑特定于应用程序的数据,这也不会在应用程序之外完成,因为要编辑的数据应该从只有应用程序知道的列表中选择。
根据我的经验的另一个例子 - 单位转换器应用程序。它有一个带有单位类别 GridView 的主菜单,在每个类别中都有一个单位列表,通过单击任何单位,我们有一个“计算器”表单,用于输入我们想要转换的值。如果我像每个人建议的那样一直这样做,我将有三个活动 - 一个用于主菜单,一个用于单元列表,一个用于输入值。但为什么?为什么我要独立于应用程序启动这三个活动中的任何一个?如果我想启动主菜单 Activity - 那么为什么不启动整个应用程序呢?如果我只想要一个单位列表 - 再次,只需启动整个应用程序,它' 不像某些 Facebook 客户端会在压力单位之间转换值(因为单位列表一次只涵盖一个类别)。并且为计算器启动一个活动根本行不通,因为它应该返回到列表以执行转换,并且您没有启动任何列表活动。
无论如何,即使我错了并且人们明智地使用它,仍然存在一个问题,即 Android SDK 并没有像我习惯的那样真正为表单提供任何支持。是的,有 ViewAnimator、ViewSwitcher 等。但它们所做的只是在它们的位置切换布局,而这几乎不会在表单之间切换。因此,至少接近该功能的唯一选择是使用活动。我们回到广场一。
所以简单地说 - 我是否遗漏了 Android 哲学中的某些内容?因为我很确定对应用程序中的每个表单都使用单独的 Activity(结果是单独的进程)是一种矫枉过正的做法。如果确实如此,而且每个人都知道——为什么 Android 没有任何实质性的表单切换机制?
提前感谢您对此问题的任何澄清。