繁体   English   中英

“MainActivity”是一种特殊的活动,它与其他活动有什么不同吗?

[英]is the “MainActivity” special kind of activity, does it differ from any other activity?

除了作为应用程序启动时的第一个 Activity 之外,主 Activity 还有什么特别之处吗? 来自: https://developer.android.com/codelabs/android-training-create-an-activity#0

一个应用程序通常由多个彼此松散绑定的屏幕组成。 每个屏幕都是一个活动。 通常,应用程序中的一个活动被指定为“主要”活动 (MainActivity.java),它会在应用程序启动时呈现给用户。 然后主要活动可以启动其他活动以执行不同的操作。

从上面的引用看来,我们有以下层次结构:

活动层次结构?

但后来又说:

每次新活动开始时,前一个活动都会停止,但系统会将活动保存在堆栈(“后堆栈”)中。 当一个新的活动开始时,这个新的活动被推到后台堆栈并获得用户的关注。 后退堆栈遵循基本的“后进先出”堆栈逻辑。 当用户完成当前活动并按下后退按钮时,该活动将从堆栈中弹出并销毁,并且前一个活动恢复。

这是否也适用于"MainActivity" 如果"MainActivity"被销毁,这是否会导致应用程序崩溃,即MainActivity的生命周期是否与任何其他活动的生命周期有任何不同? MainActivity 是退出应用程序时停止的最后一个活动吗?

为什么我需要这个:

我想在 App 退出时释放一些资源(在onStop()方法中(因为后 Honeycomb 保证会调用onStop )),尤其是ExecutorServices ,我在这里读到即使 App 退出了不保证ExecutorService将停止并使 JVM 继续工作/运行,即使应用程序已关闭/终止并将继续使用系统资源。

当用户按下图标进行冷启动时,主Activity是您的应用程序的入口点。 您可以通过 Intent Filter 在 AndroidManifest.xml 文件中将任何 Activity 设为主要 Activity。 意图过滤器告诉系统哪个活动是主要的。

虽然主要活动通常被认为是第一个入口点,但请记住,主要活动并不总是要启动的第一个活动,例如,可以将各种意图过滤器分配给您的其他活动,并且可以直接打开该活动相关的动作。 在此处阅读有关 Intent-Filter 的信息。

例如,您的应用是图库应用,典型的第一个屏幕是专辑列表。 您可以从中查看 PhotoActivity 中的单张照片。 这个 PhotoActivity 可以直接通过外部应用程序的意图打开以查看特定照片,而无需启动主 Activity。 (查看谷歌照片应用程序)

关于 ExecutorServices 或其他服务生命周期,这里有几个选项:

  1. 实现所有权机制,即启动服务的活动负责关闭服务
  2. 您可以监控应用程序的活动堆栈并在活动堆栈为空时终止服务。
  3. 利用应用程序 class 生命周期来监控事物。
  4. 这里合理讨论https://stackoverflow.com/a/5862048/593709

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM