首页 > 解决方案 > 在android应用程序中的活动之间共享类的单个实例?

问题描述

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

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

我目前有三个活动,主要活动,一个用于列出所有朋友的列表,一个用于显示特定的聊天对话。

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

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

标签: javaandroidclassandroid-activity

解决方案


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

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

他们仍然说

如果您的应用在单个进程中运行,则在实例化 AppDatabase 对象时应遵循单例设计模式。每个 RoomDatabase 实例都相当昂贵,您很少需要在单个进程中访问多个实例。

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


推荐阅读