gpt4 book ai didi

java - Android:静态变量和移动复杂数据

转载 作者:行者123 更新时间:2023-12-02 02:59:34 25 4
gpt4 key购买 nike

如果我有一个包含静态变量的类,请说 x:

class MyClass {

static boolean x = false;

// Other methods

}

现在让我们假设,我在第一个 Activity 中设置了 x = true;。在我的应用程序生命周期的其余部分(包括各种 Activity 和线程)中,由于“Google JVM”或 Android 环境的方式,该值是否会简单地“重置”回 false作品?我听说静态变量有一个“生命周期”,当程序终止时它也会终止。 Activity 算作单独的“计划”吗?服务呢?甚至是小部件?

我问这个问题是因为,由于 Activity 的“分离”程度,在 Android 中共享依赖于其他复杂处理(例如从在线数据库同步数据)的复杂数据结构通常很困难,并且静态变量通常是一个非常重要的问题。快速而肮脏的问题解决方案。我尝试过的其他事情包括序列化,但这似乎也不是一个实用的解决方案(当用户从​​一个 Activity 导航到下一个 Activity 时不断序列化和解码对象似乎会占用大量资源)。

如果我这样做是一个邪恶的人,请告诉我我做错了什么,或者更好的是,给我一些解决这个问题的更好方法的链接或示例。

最佳答案

Yes. There are times where that will reset.主要是如果用户离开应用程序并开始摆弄其他应用程序,或者用户让手机长时间进入休眠状态。 Android 进程可能会杀死实际的应用程序。然后,当用户回来时,应用程序的“状态”将被恢复,但是静态变量将保持默认值,因为实际的进程已重建。

通常,在“Activity ”和“服务”之间传递小对象是通过覆盖 Parcelable 来完成的。界面。这将允许您使用 Activity 、 View 和一些适配器的 setOnInstanceState 方法保存和恢复对象。同样,它们也有一个恢复方法,您可以在其中重建对象。 Parcelable 优于 Serialized。

较大的数据可能需要共享文件或数据库,具体取决于您要同步的数据。在 Activity 之间传递的 Parcelable 的大小限制为 1 MB。一种常见的策略是将信息保存到文件中并将 URI 发送到可以检索信息的位置。

关于java - Android:静态变量和移动复杂数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42541017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com