Android活动之间的数据共享

Android活动之间的数据共享,android,Android,我有一个问题困扰了我一段时间。我想知道从一个活动到另一个活动获取数据的标准方法或最佳实践是什么。我个人知道有两种方法可以做到这一点。第一种方法是通过putExtra()函数(或类似函数)将数据直接绑定到Intent中。然而,在我看来,这种方式有点违反了封装原则。第二种方法是将数据放在一个单独的类中,并在两个活动之间共享该类。这似乎从根本上说是合理的,但我仍然不确定。有人想解释一下吗?在活动之间共享数据有多种方法 如果数据是预定义的数据类型,如int,double,string…只需将其直接放入I

我有一个问题困扰了我一段时间。我想知道从一个活动到另一个活动获取数据的标准方法或最佳实践是什么。我个人知道有两种方法可以做到这一点。第一种方法是通过putExtra()函数(或类似函数)将数据直接绑定到Intent中。然而,在我看来,这种方式有点违反了封装原则。第二种方法是将数据放在一个单独的类中,并在两个活动之间共享该类。这似乎从根本上说是合理的,但我仍然不确定。有人想解释一下吗?

活动之间共享数据有多种方法

  • 如果数据是预定义的数据类型,如
    int
    double
    string
    …只需将其直接放入
    Intent

  • 如果数据是二进制格式或类似对象的格式,则将该类实现到
    Parcelable
    接口中,并放入
    Intent
    发送

  • 如果数据很轻或很小,您可以选择上面的1、2;但是,如果它足够大,足以影响性能或质量,那么我认为您需要一个数据存储。它就像将数据保存在某些地方:如文件、xml、数据库等,。。。并从中读/写


  • 虽然您可以将任何类实现到
    Parcelable
    接口中,以跨活动传递它们,但这种方式将创建对象的新副本并违反一致性

    Android采用模型-视图-控制器(MVC)设计。活动是控制器,我认为它们不应该自己保存数据,也不应该直接交付数据。更好的做法是,一个活动告诉下一个活动数据在哪里,下一个活动从模型本身获取数据


    也许您可以使用
    提供程序
    。活动A将数据的uri放入intent并发送intent以启动活动B,然后活动B从then intent获取数据的uri,并使用它从提供者获取数据

    我在编写我的应用程序时遇到了同样的问题,我最终创建了我的CustomApplication类,该类扩展了应用程序类,并将其添加到我的AndroidManifest.xml中的标记中。通过这种方式,我可以使用适当的getter和setter在其中存储任何类型的数据。调用(CustomApplication).getApplicationContext()将返回CustomApplication对象,该对象对于整个应用程序是唯一的,存在于单个实例(singleton)中,您可以使用它设置和获取必要的值

    好处是只要应用程序的任何部分(活动、服务等)正在运行,应用程序对象和其中的数据就存在