android中的动态全局配置变量

android中的动态全局配置变量,android,android-ndk,local-storage,sharedpreferences,Android,Android Ndk,Local Storage,Sharedpreferences,我是android开发新手。 我在android上开发了一个应用程序,但我的应用程序在后台长时间睡眠后面临崩溃。我尝试了单例应用程序和子应用程序,但它们都导致我在长时间睡眠后崩溃 我保存的配置是其中许多对象的列表。而且这些配置应该可以在整个应用程序中访问 你知道怎么处理吗?我曾在网站上搜索过答案,但运气不好。因为大家都喜欢字符串、布尔值、整数和浮点数……而且我的目标是android 2.1及更高版本 有什么简单的程序可以避免我改变整个申请机制吗 谢谢我在安卓系统中遇到过单身汉的糟糕经历。问题是,

我是android开发新手。 我在android上开发了一个应用程序,但我的应用程序在后台长时间睡眠后面临崩溃。我尝试了单例应用程序和子应用程序,但它们都导致我在长时间睡眠后崩溃

我保存的配置是其中许多对象的列表。而且这些配置应该可以在整个应用程序中访问

你知道怎么处理吗?我曾在网站上搜索过答案,但运气不好。因为大家都喜欢字符串、布尔值、整数和浮点数……而且我的目标是android 2.1及更高版本

有什么简单的程序可以避免我改变整个申请机制吗


谢谢

我在安卓系统中遇到过单身汉的糟糕经历。问题是,如果应用程序被销毁,但jvm未被激活,那么单例可能会比应用程序寿命长。当活动在同一jvm中重新启动时,即使用单例的同一实例(连接到旧类加载器),单例的状态不会重新初始化。这是否解释了应用程序的行为

一个可能的解决方案是使用Android创建的应用程序实例。它的生命周期由android管理,您可以在onCreate()中管理状态。。。自API级别14以来,还存在活动生命周期回调。请查看此处以了解更多信息:

如果我需要一个全局变量,而数据库或共享首选项不是合适的解决方案,我通常使用应用程序实例来存储状态。您可以通过调用

(MyApplication) this.getApplication();

在您的活动或服务中,例如在onCreate()中。您可以使用onCreate()方法初始化MyApplication(扩展应用程序)的实例。

您可以使用sqlite数据库将所有对象存储在一个表中,您必须以某种方式保存这些信息。文件、Sqlite和SharedReferences是标准选项,所有这些在web上都有示例代码是的,如果我使用Sqlite或对象的共享首选项包含简单变量,这将很容易,但是如果我的对象中有一个列表呢?然后我需要为此设计一个complext数据库,这就是为什么我要远离数据库或共享首选项。我现在所做的是填充stefan post,检查数据库是否为空,然后我将他发送回初始屏幕,再次初始化数据……我认为这对于登录也是有用的。我在java方面的经验是有限的,因为我曾经在web应用程序php中工作。所以这对我来说有点困惑:)嗯,这很有帮助,因为我厌倦了很多解决方案,我失去了合适的解决方案。我正在试图将数据保存到数据库中,我的应用程序配置是对象和对象列表,如下所示:公共类MainObjs扩展应用程序{private list Weather=null;private list SearchResult=null;private list Directories=null;}这些目录上的每个目录都有setter和getter,是否有如何使用的参考(MyApplication)this.getApplication();使用我的动态对象?如何访问和设置它们?感谢您的回复stefan,这正是我正在做的,但应用程序中的数据是动态填充的,当应用程序睡眠时,它们被清除为空异常错误,我猜目录被设置为空,我应该重新初始化它们?是这样还是我小姐明白了吗?对不起,我不明白这个问题。当应用程序睡眠时,应用程序实例中的数据不会被触动。好吧,情况是这样的:1-splash活动是配置了应用程序“A”实例的主活动,应用程序对象“A”当用户浏览应用程序并将主应用程序发送到后台休眠时,一旦用户重新启动它,它就会崩溃,因为它在应用程序对象“A”中找不到数据因为它被杀了,你说“重新发射”;因此,当用户浏览其他应用程序的活动时,活动不仅会发送到后台,而且应用程序可能会停止,对吗?当应用程序的每个活动/分类都被销毁时,应用程序对象不能保证无限期地生存。我建议使用数据库或共享引用I在这种情况下。