java - 设置 TextView 文本时应用程序卡住

标签 java android multithreading kotlin

我必须更新 TextView来自另一个类(不是 Activity )的方法的结果可能会很慢地完成其搜索。虽然该方法没有完成,但我认为设置 TextView将文本设置为“正在加载...”之类的内容,最后,在方法结果正常后,将文本设置为该结果。目前我正在做这样的事情:

textView.setText("loading...");
Search s = searcher.search();
textView.setText(s.result);

首先,这仍然会卡住应用程序,直到结果正常,一旦没有使用新的 Threads 。我知道要将内容设置为 Android 小部件,我们必须在 uiThread 中执行此操作。 ,但一旦我不在 Activity 内,我不知道该怎么做。 。

其次,该方法没有显示“正在加载...”文本。当我调用该代码时,应用程序只是卡住并返回最终文本。

那么,如何避免卡住/破坏,直到内容正常为止?

最佳答案

不要在 Android 的 MainThread (UI) 内进行繁重的操作。对于您的情况,请查看AsyncTask 。它给你一个方法doInBackground,你应该在其中创建一些后台内容(http请求,文件i/o),然后你将调用onPostExecute,该方法将在UI线程上调用与 doInBackground 方法的结果。 Another example .

关于java - 设置 TextView 文本时应用程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53978503/

相关文章:

java - 这就是 Java 中使用自动点击器和 GUI 进行多线程处理的方式吗?

android - 解决Android程序与MySQL连接问题的方法

android - 按下后退出 android 应用程序

java - 没有 synchronized 关键字的 ConcurrentHashMap

c# - WPF C# 从 App 调用窗口函数

java - Array.sort 只返回 0 个值。数组大小正确并且数组已完全填充

java - 如何在build.gradle文件中定义方法,该方法可以从目录编译Java文件并复制一些文件

java - 基本Java : How to call a method?

android - 如何在 Android 中为微调器设置下拉列表参数?

multithreading - Javafx 几个 GUI 线程 - 进度指示器