Android startActivityForResult vs访问结果的静态变量

Android startActivityForResult vs访问结果的静态变量,android,android-intent,Android,Android Intent,我想知道从另一个活动访问一个活动中的静态变量,而不是调用startActivityForResult()并等待结果返回,是否有任何不利之处 在我的示例中,我试图从第二个活动中检索对象列表。第一个活动调用startActivityForResult。然后,第二个活动允许用户添加可以静态存储在ArrayList中的不同对象。但我现在的做法是将对象存储在SQLite表中,然后使用Intent.putIntegerArrayListExtra()将列ID发送回第一个活动。然后,第一个数组在SQLite表

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

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

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

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

比如,内存泄漏

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

用单个活动替换两个活动,可能使用两个不同的片段。如果这些活动与复杂的数据共享紧密结合在一起,那么它们不应该完全是单独的活动

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


它是为更简单的流程而设计的,例如选择一个单独的联系人,其中“结果”很小并且可以打包
startActivityForResult()
,就像
startActivity()
本身一样,也被设计用于解决方案无法工作的应用程序之间。

使用startActivityForResult,它将始终比设置某些状态更清晰。这肯定会减少错误倾向,或者你可以把操作放在一个静态实用程序类中,并在SharedReferences中持久化?我有一个用于某些事情的单例,但是使用这种单例是否是一个好的实践几乎是同一个问题:我应该使用它们吗(单例/静态实用程序类)如果可以避免的话?谢谢,这是我希望得到的答案。通常,在交换此类数据时,我会使用片段,但我正在实现的功能与选择联系人非常相似,只是最终用户会有多种选择。我最初使用的是可包裹对象,但随着对象变得更复杂,我认为通过SQLite发送ID和重新访问会更容易。@n00bface:“但我正在实现的功能与拾取联系人非常相似”——那么?选择联系人的唯一原因是因为它不是您的活动。我仍然会使用片段进行这种复杂的通信。自从我提出这个问题以来,我一直在研究其他具有类似功能的应用程序,现在我倾向于同意你的看法。谢谢你的建议。