保持应用程序状态直到应用程序被杀死

时间:2014-08-21 20:26:07

标签: android

我在这里阅读了许多答案,但他们更加困惑我,所以这是我的问题:

我正在开发一个应用程序,其中应用程序的每个组件(活动,服务...)都需要直接访问应用程序的许可证状态(在应用程序加载并保存在变量中时确定一次)。

我希望在应用程序的某个地方保存该状态,这将成为被Android杀死的最后一个“幸存”。我在许多地方读到,在Application实例中保存状态信息是不好的,因为它可以被OS擦除而其他组件不会从内存中删除,但我不知道更好的选择是什么。我还必须将该值保存在内存中,而不是将其保存到文件或应用程序的SharedPreferences ,因为它将更容易受到手动篡改。

我的问题是 - 在整个过程被杀之前,保留这些信息的最佳位置是什么?

2 个答案:

答案 0 :(得分:1)

听起来你正在计划做的只是在你的应用程序类中“缓存”一些持久化状态。换句话说,你关心的是你调用getLicense()的应用程序类的任何实例,只要它已经通过onCreate()方法,就应该有正确的信息。

因此,如果你正在做这样的事情,我认为通过“缓存”应用程序类中的状态你会没事的。

private License mLicense;

@Override
public void onCreate() { 
    super.onCreate();
    mLicense = SomeProvider.getLicense();
}

public License getLicense() {
    return mLicense;

在Application类中存储状态的问题是,可以使用应用程序的新/不同实例恢复活动,而不是暂停时。因此,如果您将某个活动中的某些内容保存到应用程序类实例中的对象,并希望从恢复活动时检索它,则可能无效。可以找到一个很好的解释here

答案 1 :(得分:0)

您可以通过覆盖onSaveInstanceState()来保存活动或服务的状态。您将数据写入传递给此方法的Bundle参数。重新创建活动或服务后,您可以加载Bundle传递给onCreate()的信息。