【问题标题】:How do I save temporary data on android?如何在android上保存临时数据?
【发布时间】:2014-08-13 19:47:37
【问题描述】:

如何保存一些临时数据,以便在关闭应用程序时所有数据都消失了?我已经尝试过 sharedPreferences,但是当我再次打开应用程序时,数据似乎仍然存在。

我听说您可以将数据保存到一些缓存内存中,但我真的不希望在应用程序仍在启动和运行时内存被“填满”时数据消失。也许我应该使用一些全局变量?并不是说我知道如何让它发挥作用。

我的简单应用程序是一个“游戏”,当您更进一步时,它会打开和关闭活动。这基本上是一个充满愚蠢图片的游戏^^。在一个活动中完成的东西应该保存在某个地方,所以如果我回去我可以加载数据并让它看起来像活动关闭之前的样子。我希望你明白我在说什么..

任何想法,我可以如何存储一些在您需要时也很容易访问的信息。

【问题讨论】:

  • 只使用常规类变量来保存数据有什么问题?当活动完成时,数据被垃圾收集
  • 为什么不用片段?您可以向后台堆栈添加一个片段,这可能有助于您的事业,并且所有处理都可以在一个活动中完成,您可以在其中存储临时数据,以及您要存储的数据是什么?对象?

标签: android caching storage temporary


【解决方案1】:

使用全局变量。

onCreate 之前定义如下变量:

int i; 或者 String s = "myString"

然后您可以在任何功能中访问/更改它们。

希望我能帮上忙:)

【讨论】:

  • 我是 Stack Overflow 的新手,我真的很想知道为什么人们对你的答案投了反对票,但没有解释为什么......
  • 我没有投反对票,但 Java 中没有全局变量。此外,你所说的全局变量实际上是一个实例变量——甚至不是一个类变量。
  • 好的。这就是我所说的:p 谢谢
  • 好主意!但是当我一段时间后回到活动时,如果您知道我的意思,变量将具有其“实例”值。
  • 然后通过 Bundle 传递
【解决方案2】:

您可以使用全局变量,然后使用 Intent 将它们从活动传递到活动。为此,您可以使用:

Intent intent = new Intent(getBaseContext(), MYourActivity.class);
intent.putExtra("variableName", value);
startActivity(intent)

并在下一个活动中获得它

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("new_variable_name");
}

【讨论】:

  • 感谢您的提示!但这真的好吗?我的意思是,我可能会从很多活动中获得很多变量。从一个活动到另一个活动一直在传递它们,这不是有点过分吗?
  • 是的,它可能是。您可以这样做的一件事是每次启动应用程序时,清除 SharedPreferences。这将确保每次启动/重新启动应用程序时都清楚。 stackoverflow.com/questions/3687315/deleting-shared-preferences
【解决方案3】:

您好,您的方法适合将临时数据保存到sharedPreferences。通过这种方式,您可以以正确的方式更新插图并删除有关游戏的所有信息。如果你关闭游戏后需要删除数据,只需在onDestroy()生活圈中删除sharedPreferences即可;

@override
public void onDestroy()
{
    super.onDestroy();
    SharedPreferences myPrefs = this.getSharedPreferences("examlePrefs");
    myPrefs.edit().remove("example");
    myPrefs.edit().clear(); 
    myPrefs.edit().commit();    
}

或者请使用。

@override
public void onStop()
{
    super.onStop();
    SharedPreferences myPrefs = this.getSharedPreferences("examlePrefs");
    myPrefs.edit().remove("example");
    myPrefs.edit().clear(); 
    myPrefs.edit().commit();    
}

据我所知,您不知道活动的生命周期。所以本文将解释如何使用它们。

http://developer.android.com/training/basics/activity-lifecycle/index.html

【讨论】:

  • 除了 onDestroy 并不总是被操作系统立即调用,因此如果应用程序仍在内存中,再次打开应用程序时数据仍然存在
  • onPause() 也是解决方案。
  • 这是如何工作的?在代码中的哪里插入删除方法?有没有什么方法可以让我在每次关闭应用程序时从 sharePreferences 中删除所有数据? onDestory(),这不是关闭活动的方法吗? (对不起我的新手问题;))
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多