问题标签 [android-handlerthread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
171 浏览

android - java.lang.OutOfMemoryError:无法在 handlerthread.start() 分配 JNI Env

我的应用程序开始handlerthread.start()在线崩溃。以下是完整的堆栈跟踪。

这是应用程序崩溃的查找方法。

handlerThread.start();线是崩溃点。也许我应该退出线程,但我不知道从哪里退出,因为这个类不是一个活动,所以它没有任何 onDestroy 或 onTerminate 方法。但我读到他们在运行方法结束时关闭了自己。

任何帮助,将不胜感激。提前致谢。

0 投票
0 回答
103 浏览

java - 从 HandlerThread 调用自定义视图中的方法

大家好,我是 android 编程的初学者,我在尝试理解 HandlerThread 的工作原理时遇到了一些麻烦。具体来说,当我在添加到线程消息队列的可运行对象中调用该方法时,我不确定自定义视图类中的方法是否在后台线程(或非 UI 线程)中执行。

我有一个自定义视图和 HandlerThread 在 mainactivity 中初始化:

在 MyCustomView 类(扩展视图)中,我有一个名为 update() 的方法:

每次 MainActivity 检测到变化时,都会使用 mainHandler.post() 调用 MyCustomView 的更新方法:

上述代码是否会导致从 HandlerThread(非 UI 线程)重绘自定义视图?我能够同时使用invalidate()和来绘制视图postInvalidate(),因此我对该update()方法是在 UI 线程上运行还是在我创建的 HandlerThread 上运行感到困惑。

0 投票
0 回答
21 浏览

java - 代码执行在 HandlerThread 中中断了几次

我有一个奇怪的问题。处理程序线程中的代码执行中断。环境是Android系统的车载机器。在这个项目去年的测试时间里,我遇到了5次以上的问题。但是看日志,我无法得到这个问题的原因。</p>

谁知道这个问题的原因?它是由 JVM 或 Android 处理程序线程还是 CPU 引起的,为什么?

由于那里项目代码比较复杂,问题简单代码及现象如下:

通常和大多数时候,测试方法可以很容易地执行。有时在测试方法执行时,可能会打印“执行测试开始”日志但这段代码的逻辑没有执行,或者“测试日志2”日志打印但“执行测试结束” ", or "before b" print but simpleB method and behind code not execute. 这不是日志丢失,因为您可以分析代码执行与 ui 和数据保持不变。CPU信息是飞思卡尔半导体IMX6QP

0 投票
1 回答
51 浏览

android - 为什么 HandlerThread 有一个 run() 方法,我应该如何使用它?

我使用HandlerThread开发了几个代码,但到目前为止,在扩展时,在某种程度上很难理解类run()中存在的方法的含义。Handlerthread

HandlerThread类,当扩展时,一些抽象方法将被覆盖。其中之一是:

HandlerThread请您在课堂上解释一下它的用法吗?

0 投票
2 回答
37 浏览

java - android - 取消已经开始运行的runnable

我在后台有一个很长的过程要做。所以onCreate,我在我的处理程序中发布了一个可运行的,handlerThread但我有一个允许用户取消它的按钮。Runnable启动后可以停止吗?

但似乎并没有取消已经运行的可运行,或者我应该使用postDelayed()一个巨大的延迟?

0 投票
0 回答
136 浏览

android - 调用 Handler.sendEmptyMessageDelayed(int, long) 时出现 NullPointerException

在最近的应用程序发布后,在 Crashlytics 中看到了这个崩溃。它100%在后台发生;50% 在索尼,一些在华为/小米,不在三星;Android 10 中为 79%,Android 8 中为 19%。

代码片段:

该类MyEventManager定期向服务器发送一些数据;正如您从代码片段中看到的那样,它调用mHandler.sendEmptyMessageDelayed()handleMessage()安排下一个触发器。

该方法在'sstopAll()中调用。MainActivityonDestroy()

由于它在后台发生 100% 并mHandler设置为 null in stopAll(),所以我相信那MainActivity一刻已经被销毁了,但这很奇怪,因为任何待处理的消息都应该在调用mHandler.removeCallbacksAndMessages(null)时被删除stopAll(),此外,在调用之前有空检查mHandler.sendEmptyMessageDelayed().

谁能告诉我为什么我会得到 NPE?

0 投票
1 回答
76 浏览

java - 如何解决 SensorEventListener 操作单独线程中出现的 ANR 问题?

我是 Java Android 编程的菜鸟(实际上我是整个计算机编程的菜鸟)。我打算在与服务主线程分开的线程中制作加速度计传感器的 SensorEventListener。onSencorChanged 方法在单独的线程中运行良好,但是在运行 Service 后不久,就会发生 ANR。尽管发生了 ANR,但如果我没有在 ANR 发生时终止并按“等待”以保持应用程序运行,那么应用程序会按我的预期运行。长期以来,我一直试图找到解决问题的方法,但我最终无法让我的应用程序停止发生 ANR。

这是我使用 HandleThread 的代码。

我打算只向您展示与代码问题相关的部分,但这是第一次发布问题堆栈溢出,所以如果我的代码太长,我很抱歉。

0 投票
1 回答
59 浏览

android - 实时从后台线程向 UI 线程发送消息

我正在用声音和视觉闪烁在 android 中构建节拍器,当然这两者都需要同步。问题是音频处理发生在后台线程中,我们都非常清楚“只有创建线程层次结构的线程才能更改它的视图”,因此我需要一种方法来让 UI 线程更改视图。那么如何更新 ui 线程与我正在制作的节拍同步呢?这两件事似乎并不同步。有没有比我在下面描述的方法更好的方法来实现这一点?

这是我拥有的当前代码:

然后在 Fragment 类上,我用一个简单的方法调用服务

0 投票
1 回答
127 浏览

android - 在 Handler 线程的队列中添加匿名可运行对象会导致内存泄漏吗?

如果Activity VS ViewModel组件中存在此代码会导致内存泄漏吗?


用扩展 Runnable 的静态类替换匿名可运行类会有什么不同吗?这个视频教程中提到了@4:13 !

为什么匿名的 runnable 会持有对 Activity 或 ViewModel 的引用?

0 投票
1 回答
111 浏览

android - java.lang.ArrayIndexOutOfBoundsException:长度=0;index=0 - NFC Handler.handleMessage

我正在开发一个基于 NFC 的 android 应用程序。使用 Handler 类发送带有 Message 的对象时,出现 arrayIndexOutOfBoundsException length = 0 index = 0 错误。

处理程序类

覆盖

错误线

我应该在这里做什么?有人有解决方案吗?有代码的延续,所以如果需要,我可以分享源代码。