java - 在 Activity 之间传递对象和/或对象列表的有效方法是什么?

标签 java android json design-patterns

我是 Android 新手,正在我的一门类(class)中学习良好的设计模式。我正在开发一个应用程序作为我的项目的一部分,但我遇到了一些设计问题,并试图找出应该遵循的良好模式。

我有以下类(class)

public class Playlist {
  ArrayList<Song> songs = new ArrayList<Song>();
  //..getters and setters and song to list

  }

public class Song {
  private String name;
  private String artist;
  private String File;
  //Getters and setters

}

在整个应用程序中,我将拥有一个包含所有创建的播放列表的 ArrayList 和 所有可用歌曲的 ArrayList。

应用程序最终将下载一个 JSON 对象并为该对象创建一个 Song 类的实例。

我一直在研究如何在所有 Activity 中保持播放列表对象列表和歌曲对象列表可用,并找到了以下解决方案:

  1. 制作一个 Gson 并将其保存到sharedPref 文件(这似乎不是一个好主意,因为我将不断保存和写入。)

  2. 我还阅读了有关使用 sqllite 的内容。但我不明白它的意义,因为我会将大多数歌曲作为 JSON 对象获取,并使用该对象创建一个歌曲实例。

  3. 我将播放列表实现为 parceable,以便能够通过 Intent 传递列表,但这似乎不是最好的方法,因为每次发生更改时我都必须更新共享首选项。

任何人都可以指出我应该遵循的正确方向,或者为列表创建单例似乎是最有效的方法。 (全局单例,因此 android 不会在 onDestroy() 上销毁对象)

谢谢

最佳答案

  • SQLite 将是正确的方法,在启动期间存储数据,但如果您只想在应用程序处于 Activity 状态时保留数据,则不合适。
  • 您可以使用全局单例,它无疑是最简单的解决方案
  • 替代方案可能是Eventbus系统:每个组件都存储数据的副本。一个组件负责更新数据。如果有可用更新,它会通过事件总线通知所有其他组件。考虑到设计模式,这可能是最好的解决方案

关于java - 在 Activity 之间传递对象和/或对象列表的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438270/

相关文章:

c++ - 如何在 C++ 中使用 jsoncpp 解析器解析嵌套对象/数组?

json - 在 Robot Framework 中解析 Json

java - 根据字符串长度和属性过滤流

java - spring-boot-starter-oauth2-resource-server vs spring-cloud-starter-oauth2 使用哪个?

java - 如何禁止两个 JTable 之间的拖放?

mysql - 如何在j2me应用程序中连接外部服务器上的mysql服务器

android - 如何测量服务器的请求和响应时间?

android - AlignParentBottom + marginBottom 不能一起工作

android - 哪种是解析 JSON 响应的最佳方式?

java - 为什么这个 Java foreach 循环会抛出错误?