从 Android UI 抽象 Firebase

2024-04-04

我面临的问题是,当我们将 Firebase 与 Activity 或 Fragment 连接时,Firebase 作为实时数据库效果很好。但是尝试与视图元素分离并为其创建一些抽象(因为例如我们想在测试时或将来替换它)变得相当困难,尤其是尝试实现 MVP 模式。

对于这个问题有什么解决方案吗?


Firebase 和 UI 之间不应该存在固有的耦合(除非您使用FirebaseUI)。典型的解决方案是将 firebase 数据库访问封装在某种 Service/DAO 类中(例如使用 Dagger 注入到 UI 类中)......并让该类中的方法返回 RxJava Observable (这也很好地允许制作嵌套集合) firebase 查询...例如,如果执行相当于“join”的操作)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Android UI 抽象 Firebase 的相关文章

  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 缺少节点-v59-linux-x64/grpc_node.node

    我正在尝试在我的服务器中使用 Firebase admin SDK 当我部署时 出现错误 我在 firebase admin node module 映射中缺少文件 node v59 linux x64 grpc node node 我在包
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • 如何读取firebase推送通知内容并在ionic2中触发方法?

    是否可以访问push notificationionic 2 中的内容并在通知到达时执行一堆代码或event fire 我建议使用科尔多瓦插件 firebase https github com arnesson cordova plugi
  • Android中webview的截图方法

    我在 webview 中的 html5 canvas 上画了一些线 并尝试使用下面的代码截取 webview 的屏幕截图 WebView webView WebView findViewById R id webview webView s
  • SharedFlow 和 StateFlow 的主要区别

    两者有什么区别共享流 and 状态流 以及如何使用这些MVI建筑学 使用简单更好吗Flow或者这些作为状态和事件 Flow 是冷的 意味着它仅在收集数据时才发出数据 另外Flow不能保存数据 可以把它看成是水在里面流动的管道 Flow中的数
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja

随机推荐

  • 使用 data.table 重新编码变量

    我正在尝试使用 data table 重新编码变量 我用谷歌搜索了近2个小时但找不到答案 假设我有一个 data table 如下 DT lt data table V1 c 0L 1L 2L V2 LETTERS 1 3 V4 1 12
  • 何时创建新的 NSURLSession?

    重用的最佳实践是什么NSURLSessions 据我所知 似乎只要配置 超时 缓存策略等 不需要更改 就不需要创建新的配置 因为您可以从中生成新任务 单个也可以NSURLSession可以被整个应用程序重用吗 每个域 端点 按要求 查看文档
  • google buildpack psycopg2-binary 错误:未找到 pg_config 可执行文件

    这是我的requirements txt中的 psycopg2 binary 2 8 3 通过 r requests base in 我正在 docker 镜像中构建 我的印象是 如果我安装psycopg2 binary vs psycop
  • 从 C# 项目内的自定义文件夹获取文件

    第一次海报 也是新手 我创建了一个 C winform 应用程序 我添加了一个 文档 文件夹 其中添加了 5 个 PDF 文件 在我的 Form1 中 我添加了一个按钮 在按钮单击事件中 我尝试从 文档 文件夹中获取文件 我用谷歌搜索了一下
  • File.listFiles() 使用 JDK 6 处理 unicode 名称(Unicode 规范化问题)

    在 OS X 和 Linux 上列出 Java 6 中的目录内容时 我遇到了一个奇怪的文件名编码问题 File listFiles 和相关方法似乎以与系统其他部分不同的编码返回文件名 请注意 给我带来问题的不仅仅是这些文件名的显示 我主要对
  • Laravel 和惯性.js 文件下载

    I uploaded a file to the database and created Storage link using php artisan storage link and everything work perfectly
  • MySQL 中多个表的 COUNT(*)

    如何从 MySQL 的多个表中选择 COUNT Such as SELECT COUNT AS table1Count FROM table1 WHERE someCondition JOIN SELECT COUNT AS table2C
  • 如何获取 UnsafeMutableRawPointer 的值?

    我试图获取 UnsafeMutableRawPointer 指向的地址 但我无法这样做 我也是 Swift 新手 所以我可能会遗漏一些东西或者做得完全错误 我最好将原始值转换为 CChar 路人注意 我的大部分回答没有意义 因为它没有回答上
  • 如何更改 matplotlib 绘图上的字体大小

    如何更改 matplotlib 绘图上所有元素 刻度线 标签 标题 的字体大小 我知道如何更改刻度标签尺寸 这是通过以下方式完成的 import matplotlib matplotlib rc xtick labelsize 20 mat
  • 可以在不重新加载表视图的情况下更改 UITableViewCell 的高度吗?

    我正在尝试调整 UITableViewCell 的大小而不重新加载表视图 我的 UITableViewCell 包含一个 UITextView 因此用户可以输入长度可能为几行 最多四行 的列表项 现在 每次用户按下返回键时 我都会调整文本视
  • 如何在C#中获取网站根路径?

    在 C 代码中 我需要为图像编写 src 有谁知道如何在c 中获取网站根路径 我的文件夹结构是 UI Image 我发现当我使用 string rootpath Page Request ApplicationPath 如果在调试模式下运行
  • 使用 memset 初始化浮点数组

    这是我想尝试编写的代码 include
  • 如何使用 perl 解释器转义单引号?

    如何转义 bash 表达式中的单引号find xargs perl pi e s conflicts gt g 我想替换我的文件中的字符串 conflicts gt FatalError和gpojd都给出了很好的解决方案 我将用另一种选择来
  • 如何使用Python获取请求中响应的原始内容?

    尝试获取HTTP响应内容的原始数据requests在Python中 我有兴趣通过另一个渠道转发响应 这意味着理想情况下内容应该尽可能原始 这样做的好方法是什么 After requests get 您可以使用r content提取原始字节类
  • 如何在今天的 v8 中包含另一个 js 文件?

    我找到了一个旧的答案和后来的更新here https stackoverflow com questions 1149340 how do you include another js file in googles v8 但是我很难将此代
  • GoJS中如何动态添加Node数据和Link数据?

    myDiagram model new go GraphLinksModel key Alpha color lightblue key Delta color pink from Alpha to Alpha from Delta to
  • PHPExcel 和文本换行

    我知道这行代码将使单元格文本换行 objPHPExcel gt getActiveSheet gt getStyle D1 gt getAlignment gt setWrapText true D1 是所选的单元格 有没有办法让整个 Ex
  • 将 void* 转换为二维数组

    我有一个 void 我正在进入某个函数 它实际上是一个二维 int 数组 我想将它作为参数发送给需要二维数组的函数 正确施放它的最佳方法是什么 void foo void val How to cast val in order to se
  • Android Compose 中的 TextField 与键盘重叠

    我有一个TextField在列中verticalScroll 添加大量字符时 文本字段大小超出键盘范围 我看不到正在输入的内容 我尝试使用this https google github io accompanist insets lib
  • 从 Android UI 抽象 Firebase

    我面临的问题是 当我们将 Firebase 与 Activity 或 Fragment 连接时 Firebase 作为实时数据库效果很好 但是尝试与视图元素分离并为其创建一些抽象 因为例如我们想在测试时或将来替换它 变得相当困难 尤其是尝试