当前位置: 首页 > 面试题库 >

从其他线程访问视图(Android)

宣胜
2023-03-14
问题内容

我正在开发一个android应用程序,并且有一个按钮可以启动/暂停某些模拟过程。在此过程运行时,我需要实时输出一些数据。但是,当我为仿真创建新线程时,无法从该线程访问视图(将其命名为TextView),因为只能从创建它们的线程访问它们。另一方面,新线程是必需的,因为否则在仿真运行时,用户将无法执行任何操作(例如,按下其他一些按钮)。在这种情况下,创建新服务还需要创建一个新线程。我应该如何解决这个问题?


问题答案:

您可以通过多种方式处理它,

  1. 尝试在其中使用 AsyncTask ,您的 后台工作在doInBackGround() 方法中完成,并且您的UI不会阻塞,并且您还可以通过 publishProgress()和onProgressUpdate() 从其上下文调用AsyncTask来访问Activity的视图。

  2. 如果使用的是 简单线程, 然后使用 处理程序或消息或runOnUiThread ,则可以更新主线程的视图。

但, in your way I think AsyncTask is best for you.



 类似资料:
  • 如下图所示。我在回收器视图上方有一个布局,下方有一个。两个标签都是线性布局。我面临两个问题。 > 因为回收器视图有内部滚动,所以如果回收器视图中的项目增加,第一个线性布局将保持在相同的位置,但我希望它在滚动项目时向上滚动。 当项目在回收器视图中增加时,第二个布局消失了。如何使布局滚动时,回收器视图到达它的最后一个项目。 试用android:nestedScrollingEnabled=“false

  • 我有一个收藏模型的典型结构。 在视图中,每个对象都有一个“编辑”按钮,该按钮应该取消激活其他对象的所有“编辑”按钮。 我想知道这样做的最佳做法是什么。谢谢!!

  • 问题内容: 我的班级有一个名为DataStorage的哈希图: 如何在另一个类中访问此HashMap中的数据? 问题答案: 将HashMap创建为实例变量,并提供一种将其访问类API的方法:

  • 问题内容: 我想从另一个软件包访问主软件包,但这是不可能的,因为主文件不在目录中。我已经尝试将主文件放在目录中,但是当我尝试导入它时,出现此错误: 我想要这个的原因是因为我有一个tcp服务器和一个Web服务器一起工作。Web服务器可以通过主程序包获取tcp服务器,而tcp服务器可以通过主程序包获取web服务器。 我已经使它可以与Web服务器和tcpserver相互读取(中间没有主程序包),但是我想

  • 我对平台有几个问题。稍后运行。我有一个JavaFX应用程序类。在这个类中,我运行一个线程(线程从网络套接字读取数据)。 现在,当我在线程中创建一个新的时,系统会抛出一个执行(JavaFX事件调度器线程和我的netork-read线程不一样)-我理解这种行为。 但另一方面,我将来自网络阅读器的文本附加到现有的文本区域,或者在列表视图中添加/删除一些项目 我的问题: JavaFX事件调度器线程何时引发

  • 问题内容: 我正在用Go编写执行大量并行计算的软件。我想从工作线程中收集数据,但我不太确定如何以安全的方式进行数据收集。我知道我可以使用通道,但是在我的场景中,它们使它变得更加复杂,因为我必须以某种方式同步主线程中的消息(等到每个线程发送了一些东西)。 情境 主线程创建 n个 实例,并在goroutine中启动其方法,以便每个工作线程都在各自的线程中运行。主线程每10秒应从工作线程中收集一些简单值