android - 延迟后台任务在一系列事件后运行一次
问题描述
我通过在HandlerThread
a 内部组合实现了这一点Service
,使用for 任务,然后重新执行任务以确保它只运行一次,并且在从最后一个事件经过所需延迟之后,所有这一切同时保持 a以确保设备在任务到期并完成运行之前不会进入睡眠状态。removeCallbacks
Handler
postDelayed
WakeLock
这是很久以前的事了,我想实现这一点,同时受益于对较新 Android 组件的内置支持,以计算更好的电池使用率,对网络类型敏感,仅在充电时运行等。我猜 Android 从那时起就取得了进步现在可能是一个更好的选择,例如,可能有一种新的方式WorkManager
可以派上用场。
是否有更好的选择来使用更新的 android 组件和库来实现它,以比我以前实现它的方式具有更少的样板代码和更好的性能可读性和可靠性?
解决方案
编写大量多线程的 Android 应用程序可能会非常困难和压倒性,因为有很多移动部件需要处理。这一点以及许多其他原因使我们确信在我们的 Android 应用程序中大量使用 RxJava 。
我们都知道(并且偷偷承认)Java 中的多线程是多么困难。在后台线程中执行一段代码并在 UI 线程中返回结果,这听起来很容易,但实际上,有很多棘手的情况需要处理。
RxJava使得在您选择的任何线程中执行多个复杂操作变得异常容易,保持适当的同步并让您无缝切换线程。
在这里查看更多信息: https ://blog.gojekengineering.com/multi-threading-like-a-boss-in-android-with-rxjava-2-b8b7cf6eb5e2
推荐阅读
- jquery - Jquery:将值从属性加载到类
- javascript - 在 angular4 的 app.component.ts 文件中使用外部库变量
- ios - XMPPFramework for iOS,didReceiveTrust 实现
- cmake - CMake 的 add_custom_command 有时会删除它的第一个输出吗?
- android - 使用 ndk-build 构建 Android 日历
- r - 缺少参数“no”,没有默认 ifelse
- docker - 在不同的主机上运行 Docker 镜像
- oracle - 根据另一列减去一列
- junit - Spring Integration - 回复通道无响应
- sql - 根据 group by 条件获取 id