2017-08-05 108 views
-3

我读了很多关于线程的内容,但还不明白:(让我向你解释我已经学到了关于线程的内容,我们正在开发的所有东西,比如代码,UI线程或主线程是否正确?之后,如果我们调用runOnUiThread,会发生什么?另一个问题我们如何知道是时候使用新线程?我的意思是我们如何理解我们正在处理另一个线程或者替换或在新线程中进行编码?我对主题感到困惑

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

+0

您的问题完全不清楚。但要了解更多信息,请访问以下链接: https://stackoverflow.com/questions/2857184/when-should-i-use-threads –

回答

1

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

主线基本上是用于显示用户界面和其它线程处理其他大过程,如连接到服务器,等等。当你想从其他线程移动到主线程

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

我们只在从服务器获取数据,加载数据等过程很长或很长的过程中工作在其他线程中。我们只要想显示一些UI结果就从其他线程移动到主线程。

+1

因此,主线程也有时**被称为UI线程。这就是[docs](https://developer.android.com/guide/components/processes-and-threads.html)所说的。 – Enzokie

+0

@Enzokie啊是的,谢谢你指出 – Kharda

-1

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

+1

这根本不是真的。如何不使用android上的多线程和有效的应用程序?避免并发只是因为它很难被使用,这不是一个好习惯。 –

+0

这不是我想说的。我的观点是,如果没有并发的好处,应该避免多线程。多线程永远是一件好事,这是一种常见的误解。如果有一些可以并行化的东西,即两个或多个彼此独立的计算,如等待设备准备就绪或冗长的数据处理,那只是一件好事。 – SBS

0

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

  1. doInBackGround(...):在后台线程中执行的代码。
  2. onPreExecute(..):那之前被后台线程 执行的代码完成执行像显示进度条,等
  3. onPostExecute(...):代码后得到的后台线程 完成运行执行。执行像这里更新UI的任务