Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我可以将应用程序子类用作全局变量容器吗?_Android_Global Variables - Fatal编程技术网

Android 我可以将应用程序子类用作全局变量容器吗?

Android 我可以将应用程序子类用作全局变量容器吗?,android,global-variables,Android,Global Variables,我发现并阅读了很多关于Android中全局变量的文章,其中一些建议使用Application+的子类在清单文件中将其声明为glbal变量容器 但是一些文章提到,当系统内存不足时,这个类也可能被杀死,这是正确的吗 那么,使用应用程序子类作为全局变量容器是否100%可靠?有人能给我一个链接到一些解释Android应用程序生命周期的文档(不是活动)吗 编辑: 谢谢你的回答,我想我需要再解释一下我的问题 情况是,我只想共享一个全局字符串变量,活动a修改它,活动B读取它 当B当前可见且用户收到呼叫时, 如

我发现并阅读了很多关于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:

若要持久化数据,请考虑SQLite(相当复杂且有许多引用)或SysPrase:

答案是“是”和“否”——应用程序类可以用作“全局变量容器”,因为所有活动和类都可以依赖它

但是您不能依赖应用程序类(或任何其他类)无限期地持久化。换句话说,如果用户接听他们的电话,您的应用程序可能会被销毁,然后在用户完成通话并返回到您的应用程序时重新创建。所以,你们绝对不能依靠它来保存数据,但当你们的应用程序处于活动状态时,你们可以依靠它来提供对数据的全局访问

这是Android文档:

这是一篇非常好的帖子——除了“已接受”的回复外,请阅读投票率第二高的回复:

它非常清楚地解释了你的应用程序是如何被杀死/销毁的,不管你是否预料到

编辑:

为了澄清,如果您在应用程序类中有一个变量(称之为“myVar”),并且用户在活动a中设置了该变量,那么继续执行活动B,活动B将能够读取更改

如果Android“破坏”了应用程序类,用户不在应用程序中的任何时候都可能发生这种情况(在极少数情况下,即使用户不在应用程序中),应用程序将被重建,以便活动堆栈仍然有效,但不设置“myVar”,除非您持久化数据

换句话说,Android将重新创建应用程序类和活动B,但不能保证它将重新创建活动A,直到用户采取措施销毁活动B。此外,它肯定不会“重放”活动A中的用户操作以重新创建应用程序状态,在您的情况下,这意味着“myVar”这是不可靠的

如果您阅读了提供的参考资料,您会发现情况就是这样(我也测试过它)

编辑2:

若要持久化数据,请考虑SQLite(相当复杂且有许多引用)或SysPrase:

答案是“是”和“否”——应用程序类可以用作“全局变量容器”,因为所有活动和类都可以依赖它

但是您不能依赖应用程序类(或任何其他类)无限期地持久化。换句话说,如果用户接听他们的电话,您的应用程序可能会被销毁,然后在用户完成通话并返回到您的应用程序时重新创建。所以,你们绝对不能依靠它来保存数据,但当你们的应用程序处于活动状态时,你们可以依靠它来提供对数据的全局访问

这是Android文档:

这是一篇非常好的帖子——读第二高