Android:使用Bundle或其他类保存数据是否更好?

时间:2018-10-02 21:01:24

标签: java android save restore

我想知道是否最好使用Bundle或完全制作另一个类来保存数据?

在片段更改期间,我可以对其进行设置,以便onSaveInstanceState()保存信息。另外,我可以将该信息作为静态变量存储在另一个类中,然后在该类中创建一个getter函数,并使用它在onCreateView()下“恢复”变量状态。

我更喜欢使用其他类,因为我感觉自己对数据的管理有更多控制权,但是我不确定这是否会引起任何问题,或者这是否是不好的做法,因为我从未见过有人提到这样做。

2 个答案:

答案 0 :(得分:0)

捆绑包。为什么?因为您的应用可能被杀死。例如,用户可能会从您的应用导航到另一个。那时,您的应用可能会因为资源而被杀死。然后,他们可能会尝试通过“最近”菜单返回到您的应用。如果将其保存到捆绑软件中,则捆绑软件将被保存。如果将其写入静态,则数据将丢失。

可以将Bundle传递给外部类的构造函数以从该状态初始化自身,并将状态的保存也传递给该类。在许多方面,这都是两全其美的方式。

答案 1 :(得分:0)

如果您希望按照自己的方式进行操作,则仍然必须至少使用一种数据持久性方法。如果您不使用常规方法,则会浪费资源,这是一个不好的做法。请查看以下情况;

  1. 如果要保留活动状态而不使用onSavedInstanceState()或SharedPreferences,您将如何做?如果您编写一个类来完成此操作,则实际上是在重新发明轮子。

  2. 如果要使用数据库,您将如何做?

因此Bundle只是一个封装数据的容器,即对象,字符串,int等,因此可以临时或永久保存。

除了不了解这些数据持久性方法的工作原理之外,您还可以控制数据。

请注意,捆绑包不是一种保存数据的方法,而是一种将数据集容器化的方法,以便可以将其保存为一个