startActivityForResult vs访问结果的静态变量

时间:2014-07-17 16:52:39

标签: android android-intent

我想知道从另一个Activity访问一个Activity中的静态变量是否有任何缺点,而不是调用startActivityForResult()并等待结果返回。

在我的示例中,我尝试从第二个活动中检索对象列表。第一个活动调用startActivityForResult。然后,第二个活动允许用户添加可以静态存储在ArrayList中的不同对象。但我现在这样做的方法是将对象存储在SQLite表中,然后使用Intent.putIntegerArrayListExtra()将列ID发送回第一个Activity。然后,第一个数组在SQLite表中搜索这些ID,并重新创建对象。

如果我只是在第二个活动中访问了已检查项目的静态ArrayList,那将会更容易。它有效,但我想知道这是不好的做法。如果这不是一种不好的做法,那么startActivityForResult()似乎是一种在两个活动之间交换数据的非常复杂的方式。

1 个答案:

答案 0 :(得分:3)

  

我想知道从另一个Activity访问一个Activity中的静态变量是否有任何缺点,而不是调用startActivityForResult()并等待结果返回。

内存泄漏,一个。

  

然后,第二个活动允许用户添加可以静态存储在ArrayList中的不同对象。但我现在这样做的方法是将对象存储在SQLite表中,然后使用Intent.putIntegerArrayListExtra()将列ID发送回第一个Activity。然后,第一个数组在SQLite表中搜索这些ID,并重新创建对象。

使用单个活动替换您的两个活动,可能使用两个不同的碎片。如果这些活动与数据共享的复杂性紧密结合,那么它们很可能不是单独的活动。

  

如果这不是一种不好的做法,那么startActivityForResult()似乎是一种在两个活动之间交换数据的非常复杂的方式。

它专为简化流程而设计,例如选择单个联系人,其中"结果"很小,Parcelable。与startActivityForResult()本身一样,startActivity()也可以在您的解决方案不起作用的应用程序中运行。