使用SharedPreferences而不是onActivityResult将对象从一个活动转移到另一个活动是不好的做法吗?

时间:2020-02-27 12:29:51

标签: android kotlin android-intent sharedpreferences

使我的对象可序列化或可打包以显示onActivityResult似乎非常不便。 intent.getSerializableExtra()intent.getParcelableExtra()。因此,我可以轻松地将其存储到SharedPreferences中。

Android: Sending an object from one activity to other activity

有关

3 个答案:

答案 0 :(得分:1)

允许潘迪,我同意

如果要传递活动1-> 2 2-> 3 3-> 4中的数据,请使用 如果要使用从4-> 3和3-> 2和2-> 1获取数据的简单意图 比您使用startActivityForResult。

但是,我认为共享首选项通常用于存储要在应用程序关闭后还原的任何数据。如果要在打开数据时共享数据,则应考虑改用ViewModels

答案 1 :(得分:0)

如果要从活动1-> 2 2-> 3 3-> 4中传递数据,则要使用从4-> 3和3-> 2和2->中获取数据的简单意图1比您使用startActivityForResult。但是,如果您要在任何活动中发送或获取数据或使用sqlite共享首选项或本地存储,则最好使用Fragment

答案 2 :(得分:0)

从我的角度来看,SharedPreference就像手机上的本地存储。如果您要保存某些状态(如true或false),并且尽可能简单,则效果很好。为什么?因为保存和从SharedPreference获取数据非常麻烦。

使用SharedPreference的示例。如果要向用户显示横幅,请在用户从未关闭过的情况下进行。因此,如果用户之前将其关闭,则不会显示给用户。您可以在SharedPreference中保存该状态,无论用户之前是否关闭过该状态。这就是我使用SharedPreference

的观点

现在,为onActivityResult。如果我想获取通常在其他活动中已修改的变量,则通常使用它。例如,该变量很重要,它可以使用户随时了解他/她之前被修改过的数据。

使用onActivityResult的示例。假设您从活动A转移到活动B,从而带来了一些价值。在活动B中,正在修改该值。当用户从活动B返回到活动A时,它也被带走。现在,在活动A中使用该值来显示重要信息,这些信息链接到用户在活动B中所做的事情

希望这个答案对您有帮助。对不起,我的语法不好。和平