java - 在android应用程序的 Activity 之间共享类的单个实例?

标签 java android class android-activity

我正在 Android Studio 中创建 Android 应用程序,并使用 Java 进行编码。

我的应用程序将有一个处理与 SQLite 数据库的连接的类,它还将有抽象访问数据库的类,即 friend 列表以及按 friend 排序的发送和接收的消息列表。

我目前有三项 Activity ,即主要 Activity ,一项用于所有 friend 的列表,一项用于显示特定的聊天对话。

我的问题是在我的 Activity 之间共享类(即数据库类)和其他类(例如 friend 经理)的实例的最佳实践是什么。我不想为每个 Activity 复制这些类,而是在我的应用程序的生命周期中保留一个实例。

一个例子是“FriendManager”类,它具有提供 friend 列表、删除和添加新 friend 等的接口(interface)。我想在创建所有 friend 列表时使用它,而且在创建所有 friend 列表时使用它显示对话,因为它将保存对“MessageManager”类的引用,该类负责从数据库(和远程位置)加载消息。

最佳答案

一种方法是使用单例模式,如 https://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html 中的模式 1 所示。

虽然 Google 的最佳实践不是直接使用 SQLite,而是通过 Database Rooms https://developer.android.com/training/data-storage/room/index.html

他们仍然说

If your app runs in a single process, you should follow the singleton design pattern when instantiating an AppDatabase object. Each RoomDatabase instance is fairly expensive, and you rarely need access to multiple instances within a single process.

然后在他们的示例中以与单例模式相同的方式实现它 如https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6中所示

关于java - 在android应用程序的 Activity 之间共享类的单个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59594967/

相关文章:

java - setContentView 可以获取 xml 布局以外的输入吗?

c++ - C++中静态类的优点和缺点

java - Spring 的 AuthenticationManager 未正确注入(inject)

java - 如何访问 Java 中导入类的源代码?

java - BouncyCasLe 错误 : can't recognise key type in ECDSA based signer

android - 我必须写 settesting(true) 来添加 admob 广告吗?

java - 如何将一个类的 main 方法中定义的变量转移到另一个类的 main 方法中?

c# - 如何在 C# 中自动命名实例?

java - 无法通过 Android ksoap2 从 Web 服务接收数据

java - 在文件路径中传递变量