Android 我可以将应用程序子类用作全局变量容器吗?
我发现并阅读了很多关于Android中全局变量的文章,其中一些建议使用Application+的子类在清单文件中将其声明为glbal变量容器 但是一些文章提到,当系统内存不足时,这个类也可能被杀死,这是正确的吗 那么,使用应用程序子类作为全局变量容器是否100%可靠?有人能给我一个链接到一些解释Android应用程序生命周期的文档(不是活动)吗 编辑: 谢谢你的回答,我想我需要再解释一下我的问题 情况是,我只想共享一个全局字符串变量,活动a修改它,活动B读取它 当B当前可见且用户收到呼叫时, 如果A和B被杀死,但应用程序保持不变(这就是谷歌所谓的空进程吗?),我同意。 若A、B和应用程序类都被杀死了,当用户回来时,我的应用程序得到了一个干净的开始,我可以接受 我不同意的是,所有东西都被杀死了,包括应用程序类,当用户回来时,我的应用程序没有重新启动,我的意思是,它从活动B开始,会发生这种情况吗?那么我应该手动启动应用程序类还是让应用程序类来启动?这些想法对我来说都不好…答案是“是”和“否”-应用程序类可以用作“全局变量容器”,因为所有活动和类都可以依赖它 但是您不能依赖应用程序类(或任何其他类)无限期地持久化。换句话说,如果用户接听他们的电话,您的应用程序可能会被销毁,然后在用户完成通话并返回到您的应用程序时重新创建。所以,你们绝对不能依靠它来保存数据,但当你们的应用程序处于活动状态时,你们可以依靠它来提供对数据的全局访问 这是Android文档: 这是一篇非常好的帖子——除了“已接受”的回复外,请阅读投票率第二高的回复: 它非常清楚地解释了你的应用程序是如何被杀死/销毁的,不管你是否预料到 编辑: 为了澄清,如果您在应用程序类中有一个变量(称之为“myVar”),并且用户在活动a中设置了该变量,那么继续执行活动B,活动B将能够读取更改 如果Android“破坏”了应用程序类,用户不在应用程序中的任何时候都可能发生这种情况(在极少数情况下,即使用户不在应用程序中),应用程序将被重建,以便活动堆栈仍然有效,但不设置“myVar”,除非您持久化数据 换句话说,Android将重新创建应用程序类和活动B,但不能保证它将重新创建活动A,直到用户采取措施销毁活动B。此外,它肯定不会“重放”活动A中的用户操作以重新创建应用程序状态,在您的情况下,这意味着“myVar”这是不可靠的 如果您阅读了提供的参考资料,您会发现情况就是这样(我也测试过它) 编辑2:Android 我可以将应用程序子类用作全局变量容器吗?,android,global-variables,Android,Global Variables,我发现并阅读了很多关于Android中全局变量的文章,其中一些建议使用Application+的子类在清单文件中将其声明为glbal变量容器 但是一些文章提到,当系统内存不足时,这个类也可能被杀死,这是正确的吗 那么,使用应用程序子类作为全局变量容器是否100%可靠?有人能给我一个链接到一些解释Android应用程序生命周期的文档(不是活动)吗 编辑: 谢谢你的回答,我想我需要再解释一下我的问题 情况是,我只想共享一个全局字符串变量,活动a修改它,活动B读取它 当B当前可见且用户收到呼叫时, 如
若要持久化数据,请考虑SQLite(相当复杂且有许多引用)或SysPrase:
答案是“是”和“否”——应用程序类可以用作“全局变量容器”,因为所有活动和类都可以依赖它 但是您不能依赖应用程序类(或任何其他类)无限期地持久化。换句话说,如果用户接听他们的电话,您的应用程序可能会被销毁,然后在用户完成通话并返回到您的应用程序时重新创建。所以,你们绝对不能依靠它来保存数据,但当你们的应用程序处于活动状态时,你们可以依靠它来提供对数据的全局访问 这是Android文档: 这是一篇非常好的帖子——除了“已接受”的回复外,请阅读投票率第二高的回复: 它非常清楚地解释了你的应用程序是如何被杀死/销毁的,不管你是否预料到 编辑: 为了澄清,如果您在应用程序类中有一个变量(称之为“myVar”),并且用户在活动a中设置了该变量,那么继续执行活动B,活动B将能够读取更改 如果Android“破坏”了应用程序类,用户不在应用程序中的任何时候都可能发生这种情况(在极少数情况下,即使用户不在应用程序中),应用程序将被重建,以便活动堆栈仍然有效,但不设置“myVar”,除非您持久化数据 换句话说,Android将重新创建应用程序类和活动B,但不能保证它将重新创建活动A,直到用户采取措施销毁活动B。此外,它肯定不会“重放”活动A中的用户操作以重新创建应用程序状态,在您的情况下,这意味着“myVar”这是不可靠的 如果您阅读了提供的参考资料,您会发现情况就是这样(我也测试过它) 编辑2:若要持久化数据,请考虑SQLite(相当复杂且有许多引用)或SysPrase:
答案是“是”和“否”——应用程序类可以用作“全局变量容器”,因为所有活动和类都可以依赖它 但是您不能依赖应用程序类(或任何其他类)无限期地持久化。换句话说,如果用户接听他们的电话,您的应用程序可能会被销毁,然后在用户完成通话并返回到您的应用程序时重新创建。所以,你们绝对不能依靠它来保存数据,但当你们的应用程序处于活动状态时,你们可以依靠它来提供对数据的全局访问 这是Android文档: 这是一篇非常好的帖子——读第二高