2012-01-25 145 views
1

我是android开发新手。 我在android上制作了一个应用程序,但是我的应用程序在后台长时间睡眠后面临崩溃。我尝试了单例和子应用程序,但是他们两人都导致我在长时间睡眠后崩溃。动态全局配置变量android

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

任何想法如何处理?我搜索了网站寻找答案,但没有运气。因为共享偏好仅适用于字符串,布尔值,整数和浮点数....也是我的目标是Android 2.1及更高版本。

有没有简单的程序来避免我改变整个应用程序机制?

谢谢

+0

你可以使用一个sqlite数据库来存储你的所有对象在一个表中, – Houcine

+0

你必须坚持这种信息。 File,Sqlite和SharedPreferences是标准选项,并且所有这些网页上都有示例代码 – Rich

+0

是的,如果我使用sqlite或共享首选项包含简单变量的对象,那么这很容易,但是如果我有一个列表在我的对象?然后我需要为此设计一个完整的数据库,这就是为什么远离数据库或共享首选项。我现在正在做的事情是填写stefan post,并检查数据库是否为null,然后我将他发回闪屏ti重新初始化数据......我认为这对登录也是有用的。我在java中的经验是有限的,因为我曾经在web应用程序php.so工作,它对我来说有点困惑:) –

回答

0

我对Android中的Singletons有过不好的经验。问题在于,如果应用程序被销毁,但是jvm不是单身人士的状态,当活动在同一个jvm中重新启动时,即单身人士的同一个实例(连接到旧的类加载器)。这是否解释你的应用程序的行为?

一个可能的解决方案是使用由Android创建的应用程序实例。它的生命周期由android管理,您可以在onCreate()中管理状态,...由于API级别14还有活动生命周期回调。在这里寻找更多的信息:http://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks%28android.app.Application.ActivityLifecycleCallbacks%29

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

(MyApplication) this.getApplication(); 

获得初始化的应用程序或服务实例。在onCreate()中。您在其onCreate()方法中初始化您的MyApplication实例(它扩展了Application)。

+0

以及有点这是有帮助的,因为我厌倦了很多解决方案,我失去了什么是一个正常的使用。我正在远离将数据保存到数据库中,而我的应用程序配置是对象和对象列表,如下所示: public class MainObjs extends Application { \t private List Weather = null; \t私人列表 SearchResult = null; \t私有列表目录= null; } 每个这些都有setter和getter,有没有任何参考如何使用(MyApplication)this.getApplication();与我的动态对象?如何访问以及如何设置它们? –

+0

是的,我建议先看看这里:http:// stackoverflow。com/a/708317/1127492 – Stefan

+0

感谢您的回复stefan, 这正是我正在做的,但应用程序内的数据动态填充,当应用程序睡觉,他们正在清除空异常错误,我猜目录是被设置为空,我应该重新初始化它们?是对的还是我想念了解它? –