如何使用循环器创建后台线程

2024-02-13

有人可以分享带有 Looper 的后台线程的实现吗,我可以将其传递给 subscribeOn(AndroidScheduler.from(/背景线程与循环/)).

我需要这个,因为我正在尝试实现一个 DBService 类,该类在后台运行其所有操作,同时仍然获取实时对象更新。因此,当我应用 addChangeListener 时,会引发异常:

java.lang.IllegalStateException: Your Realm is opened from a thread without a Looper. Async queries need a Handler to send results of your query

或者如果我使用 findAll() 而不是 findAllAsync():

java.lang.IllegalStateException: You can't register a listener from a non-Looper thread or IntentService thread.

数据库服务代码:

public Observable<List> getAll(Class clazz) {
    return Observable.defer(() -> {
        Realm realm = Realm.getDefaultInstance();
        return realm.where(clazz).findAll().asObservable()
                .map(o -> realm.copyFromRealm((RealmResults) o))
                .doOnUnsubscribe(() -> closeRealm(realm))
                .doOnTerminate(() -> closeRealm(realm));
    });
}

HandlerThread 完成这项工作。

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

如何使用循环器创建后台线程 的相关文章

  • 使用kivy/python访问android手电筒(相机LED闪光灯)

    我不知道如何使用 python 或 kivy 访问 android 上的 led 灯 我尝试安装 python for android 以便能够将 android 模块导入到我的代码中 但不是找不到模块 我按照此处的说明克隆了 python
  • Android应用程序是否动态更改其目标API级别

    我有一个针对 Android API 级别 30 Android 11 的 Xamarin Forms 应用程序 其中安装了 Xamarin Twilio AudioSwitch v1 1 3 该应用程序可在 Play 商店中使用 并且在
  • 使用应用程序上下文滑动图像加载

    我在我的 Android 应用程序中使用 glide 进行图像加载 为了避免任何崩溃 我正在使用应用程序上下文加载图像 这对应用程序和内存的性能有何影响 这对应用程序和内存的性能有何影响 Glide提供了这么多 with 方法是有原因的 它
  • 如何监听自定义 URI

    我正在开发一个有自己的 URI 前缀的应用程序 在本例中为 dchub 到处搜索并阅读了很多 但我有点困惑 当有人点击以以下开头的链接时 是否可以启动我的应用程序dchub 在浏览器中 到目前为止 找到了很多从应用程序打开浏览器的其他示例
  • 华为移动服务的 Android 虚拟设备

    我想将HMS应用到我的应用程序中 然而 购买真正的华为手机并不在我的候选清单上 华为是否为此目的提供 Android 虚拟设备 如果没有 如何测试我的 HMS 实现是否真正有效 是的 华为确实提供了一个 Android 虚拟设备 名为App
  • 创建带有蒙版的 ImageView

    我关注了有关该主题的其他一些问题 以及 XferModes 上的 API 演示 并尝试创建一个根据 alpha 掩码屏蔽其内容的 ImageView Alpha 位图包含 0 alpha 表示要隐藏的区域 255 alpha 表示要显示的区
  • Recycler查看可见项目的数量

    我正在我的应用程序中创建一个水平 RecyclerView 它必须一次在屏幕上显示 2 个图像 因此每个图像的宽度必须为屏幕的 50 目前它工作正常 但每个项目都会占用屏幕的所有宽度 这是我的代码 mRecyclerView Recycle
  • Android 上的 React Native:无法运行程序“node”:错误=2,没有这样的文件或目录

    编辑 我不确定我采取了哪些步骤来解决此问题 并且不再看到此错误消息 因此我无法测试下面的解决方案 请单独尝试 因为不同的答案似乎适用于不同的人 iOS 版本工作正常 但在我的 Mac 上运行 Android Studio 时出现以下 Gra
  • 如何以编程方式检测 Android 设备是否与 USB OTG 连接

    我正在使用定制 OTG 指纹扫描仪 我想检查 OTG 是否已连接到我的 Android 设备或未在特定的 Android 活动中 public class BootUpReceiver extends BroadcastReceiver p
  • 在不同的活动上显示 OnItemClickListener 的结果

    我使用 OnItemClickListener 从列表视图中选择一个项目 如下所示 listView setTextFilterEnabled true final TextView disp TextView findViewById R
  • Android 导航组件,如何知道结果是否设置为 onViewCreated

    在一个片段中我setFragmentResultListener并等待结果 setFragmentResultListener EnableFingerPrintFragment ARG REQUEST KEY bundle gt bund
  • 膨胀类 android.support.v7.internal.widget.NativeActionModeAwareLayout 时出错

    如果您以前解决过这个问题 请有人帮助我 我正在尝试使用材料设计制作一些东西 以便应用程序可以运行到 API 10 的低版本 我的代码中没有任何错误 但我不断收到此错误 Android 日志猫 06 01 05 05 37 414 E And
  • 未找到 ID 为“com.android.feature”的插件

    在将我现有的应用程序转换为即时应用程序时 使用这个 Codelab 教程 https codelabs developers google com codelabs android instant apps 遇到这个错误 Plugin wi
  • 如何在不打开浏览器的情况下查看 Android 应用程序中的网页?

    嘿 我正在开发一个 Android 应用程序 我想连接到该应用程序内的网络 不过 我在某种程度上尝试过 WebView 但它在我的目录中显示的文件很好 但当连接到 google com 时 它显示错误 然后我添加了这个文件
  • API级别29 Intent.ACTION_GET_CONTENT从下载文件夹返回错误的ID

    我正在尝试查找从文件选择器意图返回的 URI 的完整文件路径 我从互联网下载了一张图像 该图像保存在浏览器默认下载文件夹中 问题是 DocumentsContract getDocumentId content describer 返回的
  • 在大画布上滚动

    我需要一些帮助来了解滚动绘制到 Android 画布上的项目的基础知识 假设我想创建一个时间线 其中 0 处的时间是可视化的顶部 并且随着时间的增加 时间线继续呈现在上一个点下方 如果我想在 Android 上渲染它 我知道我可以通过重写
  • java.io.IOException:Android Firebase 中的 FIS_AUTH_ERROR 但调试模式正常

    我在检索 firebase 令牌时遇到以下问题 FirebaseMessaging getInstance getToken 在调试模式下 我获取令牌并将其发送到服务器 在运行模式下 应用程序工作正常 它已发布 但我无法获取令牌 因为我已经
  • 无法放置双重 SharedPreferences

    出现错误 这种类型的共享首选项编辑器的 put double 方法未定义 Eclipse 提供了一种快速修复方法 将强制类型转换添加到编辑器 但是当我这样做时 它仍然给出错误 为什么我不能 put double 代码 Override pr
  • 使用本机短信编辑器发送短信后如何返回意图

    我正在使用下面的代码使用本机短信编辑器发送短信 Intent intent new Intent Intent ACTION VIEW intent putExtra address 1234567890 intent putExtra s
  • 按钮的大小取决于屏幕分辨率

    I have LinearLayout有 6 个按钮 在 4 7 英寸大小的分辨率下 按钮几乎是完美的 但在分辨率较高的设备上 它们不会占据整个屏幕 而在分辨率较低的设备上 并非所有按钮都可见 您能否解释一下如何使按钮在不同屏幕分辨率的设备

随机推荐