问题标签 [android-threading]

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 回答
105 浏览

java - 错误:无法在 Android Java 的后台线程上调用 setValue

此问题不包括 Livedata。我已经阅读了几个问题,但没有找到我的问题的答案,下面的文件给出了错误。从后台线程调用模拟更新()。问题在于在simulatedUpdate() 中调用的receivedLocationUpdate() 方法。我假设传递的参数以某种方式调用 set... 方法。我需要知道为什么会发生这种情况以及在当前情况下如何调用此方法。

记录的错误是:我得到一个 W/System.err:在 com.app.navigationSimulation.LogDataSimulation.simulatedUpdate(LogDataSimulation.java:95) 第 95 行是对 wmManager.receivedUpdate() 的调用和异常消息:无法调用在后台线程上设置值

0 投票
1 回答
43 浏览

android - 从另一个线程访问 UI 线程的视图

我读到从 UI 线程创建的视图不能直接从另一个线程访问,而不使用 post() 方法利用 looper/Handler 或 RunonUI() 方法。这是出于安全原因。我尝试对此进行测试并创建了一个如下所示的测试类,但我可以直接从新线程更改视图的值。我的理解是否有任何差距或做错了什么?

0 投票
0 回答
48 浏览

android - 如果应用程序未关闭,则每次运行时都会向应用程序添加多个线程

在运行我的 android 应用程序时,每次运行的线程数增加了 20 个线程。我有谷歌地图并在第一个活动上显示地图,然后选择目的地运行路线然后完成并返回地图屏幕。添加的线程似乎在主 googlemapsapi 中。有谁知道为什么会这样?在重新启动我做错了什么之前,我是否需要终止我的地图实现。我不能将我的所有代码都转储到其中,因为它太多了,这更像是一个普遍的行为问题,如果有人可以帮助理解导致线程数增加的原因,因为它最终会减慢我的应用程序的速度。

每次运行都会添加这些线程,并且之前的线程也会保留,因此线程数会增加 20。

我知道我将不得不使用线程池查看线程,看看为什么这些没有被关闭,但是 androidmapsapi 和 GLThread 我不明白为什么要重新创建这些?

0 投票
1 回答
36 浏览

android - Android工作室:线程应用程序不返回与非线程应用程序相同的值

我正在开发一个通过所有电话目录并收集所有歌曲的应用程序。当我正常运行它时,它工作正常,只需大约 6 秒即可完成所有操作,并导致应用程序跳过很多帧。我改变了它,所以每次找到一个文件时,一个不同的线程读取元数据并保存它。最后我也在等待所有这些,因为在那之后我正在尝试使用该列表。突然之间有几首歌曲是空的,即使它们没有在任何地方初始化。什么会导致这种情况?一个可以正常工作的应用程序,但不能使用线程..?

调用搜索的构造函数:

递归查找歌曲的函数:

将文件转换为歌曲对象的函数:

Playlist.add 函数:

即使我明确指定不会将空对象添加到列表中,它在保存歌曲时运行良好,但在尝试读取时给出空错误。每次我运行不同的歌曲并将不同数量的歌曲设置为空。

请帮忙。

0 投票
1 回答
52 浏览

android - 在 launch(Dispatchers.IO) 中调用的每个函数是否也在 IO Dispatcher 中调用?

目前,我正在尝试通过改进不同调度程序和上下文的使用来优化我的应用程序性能。我偶然发现的一个问题是,如果我在带有 IO Dispatcher 的协程内启动一个挂起函数,那么其他所有函数是否也会在同一个调度程序中执行?

例子

0 投票
1 回答
49 浏览

android - 如何使用 ROOM 库在不阻塞 UI 的情况下将数千条记录从本地数据库加载到 recyclerview

我正在使用本地数据库在 recyclerview 上加载记录,问题是记录的大小约为六千,当我单击打开或在 recyclerview 中显示这些记录时,我的设备卡住了几秒钟,出现一个空白屏幕,几秒钟后通过它出现并显示记录。有没有办法在不阻塞 UI 的情况下在 recyclerview 上加载数千条记录或数据?请让我知道,谢谢

0 投票
1 回答
55 浏览

android - 当只有应用程序未最小化时在android中进行轮询

假设我有一个printCount()每秒打印值的方法,我希望在最小化 android 应用程序时停止轮询。例如,如果它在 count = 15 时最小化并且如果我在 5 分钟后打开它,它应该恢复轮询并从 16 打印计数。当应用程序最小化时,轮询不应该在后台运行。

  • 在android中实现这一目标的最简单和最好的方法是什么?
  • 还有一种 RxJava 方法来实现这一点吗?
0 投票
2 回答
388 浏览

android - Android CoroutineScope 完成后自动取消

我想知道coroutineScope它的工作完成后是否会自动取消。coroutineScope假设我在自定义类中创建一个而不是 ViewModel类或Fragment / Activity类:

在这种情况下,后台工作完成后,会backgroundScope自动取消吗?

0 投票
3 回答
36 浏览

java - 在 Android Studio 中完成后如何从可运行线程传递值?

我正在使用一个线程从我的数据库中获取一个 id。一旦线程完成运行,我需要在另一个线程中使用该 id 来获取项目列表。一旦该线程完成,我将使用项目列表来填充微调器。我遇到的问题是它在线程返回项目列表之前填充微调器。我怎样才能使它在线程完成运行之前不会填充微调器?

在此处输入图像描述

0 投票
1 回答
244 浏览

android - 显示下载进度条

在我的应用程序中,我使用执行器服务从 url 下载文件。现在我想添加一个水平进度条来显示下载进度。但我面临错误。如何在不使用异步任务的情况下在此代码中添加进度条?