Android应用程序组件销毁和重新创建的详细信息

2024-06-20

有人可以向我提供一些具体的、值得信赖的(最好是简洁的)信息,内容如下:

  1. 系统销毁和(如果适用)重新创建组件的顺序 (片段、活动、活动的线程/异步任务/计时器、 静态数据(类何时卸载?),其他类中的线程/异步任务/定时器,主机 TabActivity、ActivityGroup、绑定本地Services、Application、进程) 当应用程序位于后台和前台时。
    在哪些点上破坏可以停止(可以遇到什么状态 返回应用程序后 - 就像“包括应用程序对象在内的所有内容 被摧毁,进程还活着”?

  2. 是否有可能(不修改 Android)以编程方式造成同样类型的破坏 以便与系统执行此操作时无法区分,或者当我们自己选择释放内存(由 onLowMemory 触发)时需要一个单独的机制?

  3. 1) 中所有场景的可靠再现步骤(junit.framework 可以吗?我还没有调查过)?

  4. "如果用户长时间离开某个任务,系统会清除该任务中除根活动之外的所有活动。当用户再次返回任务时,仅恢复根 Activity http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html#Clearing“:这是除了进程/组件生命周期/销毁之外,还是与之相关?

我读过各种来源提供的信息,通常不完整且具有误导性,有时甚至是不正确的。
我承认,我浏览了文档的某些部分,所以我可能遗漏或误解了某些内容。

[编辑]为了避免误解:我要问的是Android销毁组件以释放内存,通过传递Activity.onDestroy。
当我将应用程序置于后台并稍后返回时,将发生以下序列之一:

  • onPause、onStop、onRestart、onStart、onResume
  • onPause、onStop、Application.onCreate、onCreate(notNull)、onStart、onResume

[编辑2] 赏金活动开始了。需要以下方面的可靠信息:活动、片段、应用程序、绑定(可能是远程)服务、流程。
部分/全部破坏场景。参见第一点。


这就是我的经验以及我询问过的开发人员的经验似乎表明:

    • 碎片不会自动销毁。
    • 应用程序堆栈上的不可见 Activity 可以按任意顺序、任意数量自动销毁。
    • 被销毁的活动(或任何其他类)的线程和静态保持不变,直到应用程序被销毁。
    • TimerTasks:尚未测试。
    • 绑定本地服务:在最后一个绑定活动和应用程序销毁之间的某个地方被销毁。
    • 应用程序是进程中最后进入的事物,并且与所有线程一起“进入”。
    • 在应用程序对象销毁后,该进程可以存在很长一段时间(20 分钟以上),除非您有自动任务终止程序。
    • TabActivity 下或 ActivityGroup 中的活动不会自动销毁,但如果容器被销毁,则会立即全部销毁。
      示例:选项卡下带有 ActivityGroups 的 TabActivity。所有活动均实时直播。另一个活动已启动,全屏。 TabActivity 及其中的所有内容现在都可以被 Android 销毁,无论是一次性销毁还是根本不销毁。
  1. NO.
    如果您手动销毁一个 Activity,它会经历整个生命周期,并且在再次启动时不会将 Bundle 传递给 onCreate。
    此外,onLowmemory 并不可靠 - 即使分配步骤很小,在抛出 OutOfMemoryError 之前也可能永远不会调用它。
  2. NO.
    尽管自动销毁/恢复是 Android 中的一个主要功能,但没有任何方法可以测试此类场景。
  3. 这可能是相关的only该进程是否仍然存在。如果是这样,Android 将尝试恢复旧的 Activity。如果没有,那就是干净的重新启动。

上述内容包括一些假设。
我仍在等待有人确认并提供一些文档(保证不依赖于类的当前实现)。
如果其中有任何错误,请纠正我。

编辑:以上信息可能已过时,在Android 2.1-2.3上测试

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android应用程序组件销毁和重新创建的详细信息 的相关文章

  • 如何用Android做交互动画(翻译)

    我在 Android 中有一些 png 序列 我需要将它们的 x 和 y 位置从屏幕顶部到底部的翻译动画化 当动画发生时 我需要对象来接收单击事件 我知道这在 3 0 之前的 Android 版本中效果不太好 因为display对象的位置与
  • 使用 ColorMatrix 调整亮度

    我正在尝试使用 ColorMatrix 调整图像的亮度 当尝试调整色相时 您可以在 Photoshop 中看到此选项 亮度和亮度也是两个不同的功能 但我不知道要更改哪些值才能实现此目的 目前我可以使用此代码更改色调 public stati
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • Kotlin Android Firebase 数据库哈希映射转换为类

    我正在尝试从 firebase 数据库获取数据 断点显示它正在获取数据 但看起来我没有正确地将其分配给我的班级 这会导致此异常 java lang ClassCastException 无法将 java util HashMap 转换为 班
  • ndk-build error.opencv2/core/core.hpp:没有这样的文件或目录

    我在 Android 中使用 OpenCV Nonfree 模块时遇到问题 我读了这个教程https sites google com site wghsite technical notes sift surf opencv androi
  • 清晰的图标 清晰的 Android 应用程序

    你好 下午好 关于如何提高图标的 png 质量 有什么想法吗 我使用了 Android 开发者页面上的套件 但我无法获得清晰的图像 我的意思是非常清晰 我是否需要以不同的方式加载此图标 而不仅仅是拖入我的布局 谢谢 我使用这个布局
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • 如何最大限度地减少 Google API(地点)自动完成的请求量?

    我正在使用 google API 位置来自动完成位置AutoCompleteTextView 我做了几次测试 大概进行了 20 次搜索 在我的 google devs 个人资料中 写着我已经发出了 200 个 API 请求 据我所知 每次我
  • 将清除会话标志设置为 FALSE 后,我丢失了已发布的值

    有人有一个合乎逻辑的解释为什么尽管我有clear session flage false当我未连接到经纪商时 我没有收到我订阅的更新的已发布消息 将 aore提到的标志设置为 false 后 我运行了我的应用程序 并且我不断向主题发布一些值
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • 何时调用 glMatrixMode()

    我所关注的大多数 Android OpenGL ES 教程都有其 onSurfaceChanged 函数 如下所示 public void onSurfaceChanged GL10 gl int width int height gl g
  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • Android:从 PhoneGap 应用打开 Play 商店链接

    我想从我的phonegap 3 4 应用程序打开一个指向Google Play 商店的链接 呼唤market details id com google android apps maps导致 ActivityNotFoundExcepti
  • android - 如何让按钮每次按下时单击播放声音文件?

    我打开了一个新项目 现在我想做的是 通过按下按钮 我想要播放一个 mp3 文件 而且每次按下按钮时 声音文件都会再次从头开始播放 所以假设 mp3 长 10 秒 我按下按钮 它正在播放 4 秒后我再次按下按钮 声音将再次播放 现在我想知道的
  • 用户通过 firebase 动态链接安装应用程序并在应用程序抽屉上打开应用程序后,如何获得深层链接?

    我正在使用 firebase 动态链接邀请朋友使用我的应用程序 一切都很好 单击邀请链接会将我带到 Playstore 当我安装应用程序并等待其完成时 Playstore 会向我显示 继续 按钮 当我单击此按钮时 应用程序将打开 并且我会收
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 片段中的 SavedInstanceState 始终为 null

    我使用 XML 以及活动中的 setContentView 将片段附加到活动 A 有一个问题 因为我的片段中有非常动态的视图 所以当方向改变时 我必须恢复所有的观点状态 我有问题 因为我正在使用类似的东西 public void onSav
  • Android SDK WebView调用Activity

    我试图在单击 WebView 组件内的链接时启动活动 我的Webview已加载到里面Main java我想启动SubActivity java当点击网站内的链接时Main java 另外 如何将参数传递给此活动 Example inspec
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie
  • android.view.WindowLeaked - 使用对话框和新意图时

    我已经尝试了 stackoverflow 上提供的所有可能的解决方案 但我仍然在 logcat 中遇到此错误 活动 com xyz MainActivity 泄露了最初在此处添加的窗口 com android internal policy

随机推荐

  • TypeScript:增强内置类型

    如何增强其中一种 内置 类型 例如数组 在 JS 中 我会做类似的事情 Array prototype shuffle function TypeScript 中的等价物是什么 TypeScript 中的类型是 开放式 的 所以你可以这样写
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • Android WebView里面的ScrollView只滚动scrollview

    在我的应用程序中 我有一个 ScrollView 其中包含一些线性视图 一些文本视图和一个 Webview 然后是其他线性布局等 问题是 WebView 不滚动 Scroll 仅侦听 ScrollView 有什么建议么
  • Jquery 组合 SlideUp/Down 并单击

    我创建了两个脚本 其中一个具有向上滑动和向下滑动命令 这些命令在页面加载时作用于计时器 第二个是单击事件 其中单击链接时执行向上 向下滑动命令 这两个脚本都是单独工作的 但我无法让它们一起工作 这是定时向上 向下滑动脚本 document
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 对于编写有意义的基准,您能给我什么建议?

    我开发了一个框架 供我们组织中的多个团队使用 在此框架之上开发的这些 模块 的行为可能截然不同 但它们都非常消耗资源 尽管有些模块比其他模块消耗的资源更多 它们都接收输入数据 分析和 或转换数据 然后进一步发送 我们计划购买新硬件 我的老板
  • iPhone - UIImage imageWithData 返回 nil

    我需要从字节数组创建 UIImage 现在我创建了字节数组 image CGImageCreateWithImageInRect aux CGImage imageRect context CGBitmapContextCreate dat
  • Scala sbt 项目给出 NullPointerException?

    当我运行命令时sbt clean compile run在我的 sbt 项目中 它给出了空指针异常 这是控制台输出 info Loading project definition from home dnilesh workspace wi
  • 使用chart.js 的年龄金字塔图

    我正在尝试使用 Chart js 创建一个图表 如下所示 例如 https thebreadoflifeblog files wordpress com 2013 01 uk age pyramid png https thebreadof
  • 我无法使用 scikeras.wrappers.KerasRegressor 执行 cross_val_score

    from tensorflow import keras from sklearn model selection import cross val score from sklearn datasets import make regre
  • 将MongoDb atlas数据库导出到本机Mongo compass

    我在 Atlas 中有一个名为 test 的远程数据库 我想将集合名称 image table 下载为 JSON 文件 在 Mac 终端中 mongoexport db test collection image table image j
  • 通过 WSAPI 在服务器端计数?

    是否可以使用 WSAPI 在 Rally 的服务器端进行对象计数 例如 我有一个应用程序想要计算工作区中每个项目的未解决缺陷数量 我不需要了解这些缺陷本身的任何信息 所以我只想要一个计数 不需要撤回任何其他数据 有办法做到这一点吗 您可能想
  • 从 C# 调用接受调用者分配的结构数组的 C 函数

    我有以下 C 结构 struct XYZ void a char fn MAX FN unsigned long l unsigned long o 我想从 C 调用以下函数 extern C int func int handle int
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • JSF - 在 ajax 调用上传递参数 - 这段代码有什么问题?

    当我进行 ajax 调用时 我需要将参数传递给 bean 我的豆子是这样的 ManagedBean RequestScoped public class Selector ManagedProperty value param page p
  • CSS 中的像素与像素密度

    我对 HTML 和 CSS 非常陌生 我突然想到 当决定某个东西是 5px 时 比如说 由于像素的物理尺寸取决于密度 所以 5px 在 100 ppi 的屏幕上看起来肯定比在 300 ppi 的屏幕上看起来更大ppi 这是正确的吗 如果是
  • Android应用程序组件销毁和重新创建的详细信息

    有人可以向我提供一些具体的 值得信赖的 最好是简洁的 信息 内容如下 系统销毁和 如果适用 重新创建组件的顺序 片段 活动 活动的线程 异步任务 计时器 静态数据 类何时卸载 其他类中的线程 异步任务 定时器 主机 TabActivity