0

我的问题对我来说似乎很简单,但显然并非如此。

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

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

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

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

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

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

我觉得这一切都是一团糟。:-( 有任何想法吗?

4

3 回答 3

0

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

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

我真的认为要么使用 Intent 要么使用共享首选项,它们是迄今为止对代码要求最少的选项。

于 2013-07-01T14:48:59.323 回答
0

哦,伙计,这不是一团糟:)

你知道设计模式吗?如果是,那么你可以使用单例模式,你可以为你的下一个活动存储数据

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

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

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

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

希望它能解决你的问题

于 2013-07-01T15:45:46.207 回答
0

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

于 2013-07-01T15:09:46.350 回答