我是Android开发的新手。 我在android上做了一个应用程序,但是我的应用程序长时间在后台睡觉后面临崩溃。我尝试了单例和子应用程序但是这两个都导致我在长时间睡眠后崩溃。
我正在保存的配置是许多对象的列表。此外,这些配置应该可以在整个应用程序中访问。
任何想法如何处理这个?我搜索网站寻找答案,但没有运气。因为共享首选项只有String,boolean,integer和floats ....我也是针对android 2.1及更高版本。
有没有简单的程序来避免我改变整个申请机制?
由于
答案 0 :(得分:0)
我在Android中与Singletons有过不愉快的经历。问题是Singleton可以比应用程序寿命更长,如果应用程序被销毁但是jvm不是Singleton的状态,当活动在同一个jvm中重新启动时没有重新初始化,即具有相同的单例实例(连接到旧的类加载器)。这是否解释了您的应用程序的行为。
可能的解决方案是使用Android创建的Application实例。它的生命周期由android管理,你可以在onCreate()中管理状态,......自API级别14以来,还有活动生命周期回调。点击此处了解更多信息:http://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks%28android.app.Application.ActivityLifecycleCallbacks%29
如果我需要一个全局变量并且数据库或共享首选项不是合适的解决方案,我通常使用Application实例来存储状态。您可以通过调用
来获取已初始化的应用程序或服务实例(MyApplication) this.getApplication();
在您的活动或服务中,例如在onCreate()中。您可以在其onCreate()方法中初始化MyApplication(扩展Application)的实例。