问题标签 [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 投票
3 回答
450 浏览

android - 我需要使用android中的线程每秒增加一个数字

在这里,我使用 Handler 来做,但它只会增加一个数字一次。我希望它增加数字,直到我使用 handler.removeCallbacksAndMessages(null); 停止它。

谁能指导我如何实现这一目标。我只是安卓新手。

0 投票
3 回答
233 浏览

android - 这些在 UI 线程上运行代码的方法有什么区别?

关于如何在 UI 线程上运行代码,网上发布了不同的方法。它们都完成相同的任务,但是,我真的很想知道这些方法之间的区别。

方法一:

方法二:

方法三:

0 投票
1 回答
137 浏览

android - Android 会暂停 UI 线程以运行后台线程吗?

Android 线程调度程序是否保证主 UI 线程优先于所有其他用户(工作/后台)线程,或者用户线程是否会中断主线程?我的目标是在不过度同步我的 Java/Kotlin 代码的情况下避免竞争条件。

0 投票
2 回答
536 浏览

java - Android:另一个线程使 UI 无响应?

我正在从我的活动中启动一个新线程,该线程执行 10 秒操作,然后向 UI 报告runOnUiThread()

在 10 秒的操作期间,UI 变得无响应并且不响应任何用户交互。在这种情况下,我试图使用工具栏中的按钮关闭活动。引发ANR错误,但在工作线程完成后处理按钮单击。

虽然,当线程工作时,应用程序仍然能够显示旋转ProgressBar,如果工作在 UI 线程上完成,则不会发生这种情况。

显示ProfilerUI 线程在此工作期间处于休眠状态,所以据我了解它应该是响应式的?我尝试过使用AsyncTask,但这也不起作用。无论如何,这里有一些代码:

Thread当窗口成为焦点时开始新的:

活动:

线:

我不确定这是否viewModel与问题有关,但它是viewModel.getAllWords()执行繁重的 10 秒 Room db 操作的方法。

这是Profiler显示睡眠UI 线程和工作线程Thread(AsyncTask #6)的快照:

在此处输入图像描述

编辑:

好的,所以我认为问题在于房间数据库操作 / viewModelgetAllWords()用释放的 UI 线程替换内容以Thread.sleep(10000);进行用户交互,因此以下代码(出于某种原因)阻止了用户输入:

编辑2:

正如建议的那样,我现在使用onPostExecute()一个接口来检索单词:

get()已被删除,我只是执行任务,传入listener处理回调:

这很好用,单词成功返回到我的活动,但在执行操作时UI 仍然无响应。

0 投票
1 回答
846 浏览

android - 如何在Android中获取库的包名?

我有一个 android 应用程序,我在内部依赖几个库。现在我正在尝试记录在单个组件级别(这意味着单个库级别)发生的崩溃,以便帮助我分析导致崩溃的组件。

有什么方法可以获取在他们的 android 清单中添加的库的包名称?

0 投票
1 回答
462 浏览

c# - 偶尔的 I/Choreographer(17165):跳过 ## 帧黑屏锁定,Android Xamarin c#

有时,在导入照片或从观看视频等活动返回应用程序时,我们的应用程序会锁定并出现黑屏,尽管某些功能仍会继续运行,例如敬酒。日志的结尾始终如一地说:

这是一个不一致且断断续续的问题,因此很难确定。任何想法,将不胜感激。我假设一些线程问题正在锁定 UI 线程,但因为它很少发生并且不容易重现,我真的不知道发生了什么。

编辑:这只发生在从一些意图活动(例如发送电子邮件、挑选照片等)返回应用程序时。我已经设法通过一些放置良好的断点使其可重现。

这是我认为负责的 c# 代码。我添加了 REF(1) 2 和 3,以指示我的断点在哪里。似乎 REF(2) 冻结时永远不会到达,因此有时永远不会重新创建被破坏的表面,因此永远不会恢复渲染......我们正在使用可记录的表面视图,这是它的子类,请原谅我多久它是:

这是日志的较长版本,因为它失败了,我有 3 个日志产生几乎相同的输出,如下所示:

0 投票
1 回答
138 浏览

android - 将数据插入本地数据库时,Android ProgressBar 不更新

我在更新进度条时遇到问题。在这里,我制作了一个自定义进度条功能,如下所示

然后从数据下载函数中调用它。数据下载完成后,我将数据插入 SQLite DB(本地 dB)。

在此处插入数据之前更新进度条。但是当数据声明插入进度条时不会更新。如何解决这个问题?谢谢大家。

0 投票
1 回答
49 浏览

android - RxJava 和 Realm 请求使应用程序跳帧

我在一个 android 项目中使用 RxJava 和 Realm 数据库。但有时按下按钮没有响应,你必须多次这样做才能让它在某个时候工作,并且 android 日志说 xxx 帧已跳过。我知道这与滥用 UI 线程有关。这是我的一些要求,有人可以告诉我他们有什么问题吗?Realm 希望我在使用响应的同一线程上执行 IO 请求(虽然不太确定)。

getAll 方法与改造。

领域提供者方法:

0 投票
2 回答
149 浏览

android - 在 RxJava 中创建同步间隔

我需要以 4,8,12,16... 秒的特定间隔运行2 个作业,另一个是 5,9,13,17...秒。

我在 RxJava 中使用了区间运算符。作业 B 需要在作业 A 之后运行。作业 B 应该在作业 A 运行时休眠,反之亦然。到目前为止,代码如下所示

在以下方面需要帮助

1. 使用 RxJava 实现上述目标的最佳方式

2. 运行 JobA 4 秒,然后运行 ​​JobB 4 秒,然后再次重复该过程。

0 投票
2 回答
619 浏览

java - 后台线程中的进度条.setProgress(variable)

这是我在堆栈上的第一个问题(伟大的社区,谢谢!)

所以,我有这个问题:

我正在开发一个带有选项卡布局的 android 应用程序。每当我导航到“状态”选项卡时,我想显示一个根据变量值更新的循环进度条。我们称这个变量为 prog。此外,我想在 ProgressBar 的中心显示一个TextView,它显示相同的prog值。

我想出了这部分代码:

在这个片段中,我创建 ProgressBar 和 TextView,然后将它们传递给 Runnable,如下所示

我希望此更新在应用程序运行时一直运行(因此我忽略了AsyncTask)。一段时间后,ProgressBar 会停止更新,而 TextView 会继续工作而没有任何问题。

我一直在阅读可能的原因是调用setProgress(temp)可能会卡住 UI。但是,当 TextView 仍在工作时,我无法理解。

你能建议一个更好的方法来更新进度条吗?

谢谢!