我对Threads很困惑

时间:2017-08-05 06:53:22

标签: java android multithreading

我读了很多关于线程但还不了解的内容:(让我向你解释一下我学到的关于线程的知识。我们正在处理的所有代码如果在UI线程或主线程上工作了吗?之后如果我们调用runOnUiThread会发生什么?我的另一个问题是如何知道使用新线程的时间?我的意思是我们如何理解我们正在处理另一个线程或替换新代码中的代码?

我知道这是一个不明确的问题,但我也不明白。请帮帮我谢谢,约翰。

3 个答案:

答案 0 :(得分:1)

让我试着回答。实际上Android有主线程(也称为UI线程)和其他线程。

主线程主要用于显示UI,其他线程用于处理其他大型进程,如连接服务器等。

当你想从其他线程转移到主线程时,会调用

runOnUiThread。这是必需的,因为只有主线程可以在UI上显示/显示结果。因此,当您在其他线程上完成某个进程,并且想要在应用程序上显示结果时,您需要通过调用runOnUiThread在主线程上显示它。

我们正在处理其他线程,只要它是一个很大或很长的过程,比如从服务器获取数据,加载数据等。每当我们想要显示一些UI结果时,我们就会从其他线程转移到主线程。

答案 1 :(得分:0)

最简单的方法是使用AsyncTask<>类。你需要覆盖三个函数。

  1. doInBackGround(...):在后台线程中执行的代码。
  2. onPreExecute(..):在后台线程之前执行的代码 完成执行,如显示进度条等
  3. onPostExecute(...):后台线程后执行的代码 已完成运行。执行更新此处的UI等任务

答案 2 :(得分:-1)

一个经验法则是:如果不需要,请不要使用多线程。多线程总是容易出错,在许多情况下都没有任何好处。基本上,每当执行一个冗长的操作(即一些像图像处理这样的大量计算)时会启动一个新线程,这会阻塞主线程一段时间,因此应用程序将无法响应。