2012-09-27 41 views
3

我一直在研究应用程序类和保持对象状态的方法,我在网上读了很多东西,包括android文档(生命周期,建议等) ),关于这个问题的许多问题/答案,以及其他的东西,仍然有一些疑问,我希望这部分对未来的发展非常明确。我想这是每个android开发者的常见问题,所以我想知道什么经验(而不仅仅是文档)对此有所说过。所以我有一些问题:应用程序类和对象状态

1-应用程序类可以杀死内存或初始化为应用程序在前台?只是,我有一个应用程序的子类与一些静态变量保持状态的情况下,我知道,如果应用程序去背景它可以被杀死的内存,然后重新启动,但它可以发生在前台?

2-如果应用程序内存可以在任何时候被操作系统擦除或初始化,那么保持数据库或文件中对象状态的唯一可靠方法是? (真的希望不!!)

3-任何其他提示,可以帮助解决这个问题。

+1

另外,您的手机电池可随时移除,无需通知。将数据提交给sharedpref,文件,数据库或其他任何提前确定保留它们的内容。 – njzk2

+0

我不想保留我的数据,只有在应用程序生命周期的内存中有意义的数据,我不想保存它从来没有 – labreu

回答

2

根据我的经验,您对文档的说明过于谨慎和过度思考。大多数应用程序不需要也不应该扩展应用程序。

1-只有在最极端的情况下,应用程序才会在前台被杀死。所以你现在应该忘记这部分,只是担心你的应用程序本身。如果发生这种情况,用户将从头开始重新启动您的应用程序。

2-状态的对象,你应该保持对活动的生命周期(而不是应用)通过覆盖的onSaveInstanceState(捆绑outState)和onRetainCustomNonConfigurationInstance()和的onCreate(捆绑savedInstances)和getLastNonConfigurationInstance()读取它们的值回。这些方法是针对活动可能会被弃用的,我知道有些是,阅读文档,他们会告诉你哪些是碎片的替代品。使用碎片。此外,状态可以通过intents/bundles从活动传递给其他人。

3-为了保持持久性数据,您应该使用数据库和SharedPreferences,活动状态使用可用活动和片段回调。如果不知何故,你的应用程序有一些相当特殊的需求,你可以创建一个单例,但是当我说的时候相信我,99%的应用程序不需要。

希望它有帮助!

+0

是的,也许我过度使用,但这是因为我'在我的最后一个应用程序中看到了一些奇怪的行为,我在Application子类中有一些静态变量,并且它工作正常,但是偶尔vars只是像初始化那样,这就是为什么我开始搜索并且想知道它是如何工作的,无论如何,你是一个非常好的答案,你是对的,避免这种模型,为未来的发展注意到 – labreu