如何将计算数据保存在内存中以进行多项活动?

时间:2013-07-01 14:43:02

标签: android android-activity android-fragments android-contentprovider data-transfer

我的问题对我来说似乎很简单,但显然不是。

我有一个核心类,它能够根据用户输入的参数计算复杂的结果。到目前为止,我将结果显示为ListView,对于详细视图,我使用了滑动面板 - 所以在一个活动A中一切都很整洁。

但是现在,我想摆脱滑动设计并“简单地”使用主/细节流程,这样我就可以在平板电脑上和手机上分别显示两个片段。

好吧,我不想为此重新设计整个应用程序,但基本上:我如何获取详细信息到我的不同活动B ???

我知道通过Intent我只能发送Parcelable(或可序列化)数据,但对于基本上是int-array类型的数据来说,这远非复杂!所有从意图转换和重建 - 这只是一种痛苦!

当然,我也不需要数据库或类似复杂的东西 - 请不要使用SharedPrefs,这至少与实现Parcelable一样复杂!

基本上,我想到了两种方法,但它们都......臭......那种: a)将计算出的数据存储在应用程序类中 - 问题:应用程序可能会被销毁并重新启动,只是为了重新显示活动B.然后应用程序对象中不会留下任何内容! b)实现一个内容提供者,该提供者进行计算并在那里缓存结果。嗯。光标再次是复杂的方式来传递简单的结果。并且:我应该在ContentProvider中缓存结果多长时间?

我觉得这一团糟。 :-( 有什么想法吗?

3 个答案:

答案 0 :(得分:0)

Intent方法是迄今为止最简单的方法。 谈论主/细节流程,通常意味着传递一个id,这是很少的信息,很容易从A到B(活动)重建。

请不要使用A,因为你提到的原因,B哇!太多的工作=)

我真的认为使用Intent或使用共享Prefs它们是迄今为止代码要求最低的选项。

答案 1 :(得分:0)

您是否能够创建应用程序被破坏的行为并删除所有内容?我一直在开发一个应用程序按照相同的方式执行某些操作,我刚刚使用公共静态变量将事物存储在它们创建的活动中。这样,它们可以从其他活动中访问。不一定是最优雅的做事方式,但它对我来说很合适。

答案 2 :(得分:0)

哦,男人,这不是一团糟:)。

您是否了解设计模式,如果是,那么您可以使用单例模式,您可以在其中存储下一个活动的数据

public class mySingleton 
{
   mySingleton instance;
   yourvariable1;
   yourvariable2;
   yourvariable3;
   yourobject1;
   yourobject2;

  public static mySingleton getSingletonInstance()
    {
      if(instance==null)
        {
          instance=new mySingleton();
        }
      return instance;
    }
}

通过这种方式,您可以保存数据,直到您的任何活动正在运行,或者您可能会说您的应用程序在系统内存中

但是如果你想关闭应用程序并保留数据然后在那里建立一个后台服务,你可以保存应用程序活动将破坏的数据,但服务将包含变量和数据

希望它能解决您的问题