【问题标题】:Which is best : runonuithread or asynctask android method : thread? [closed]哪个最好:runonuithread 或 asynctask android 方法:线程? [关闭]
【发布时间】:2013-09-27 13:34:54
【问题描述】:

我对 Android 编程语言中的线程有疑问; 在线程中调用 UI 线程的正确方法是什么? 是 runOnUIthread 方法还是 AsyncTask 方法? 请问有论据吗? 感谢您的建议。

【问题讨论】:

  • 如果您已经在单独的Thread 中,您想使用runOnUiThread()AsyncTask 通常是一种单独的线程处理方式。

标签: java android multithreading


【解决方案1】:

AsyncTask 是一个提供线程的简单使用和与 UI 线程通信的工具。

runOnUiThread 方法没有线程。它用于与后台线程内的 UI 线程通信。例如。您在线程中有一些计算,并且想要更新视图。为此,您必须在 UI 线程上运行修改 UI 的部分。因此你可以使用这个method

【讨论】:

    【解决方案2】:

    这取决于您要完成的工作。如果它是一个小的一次性任务,比如通过 http 下载文件,那么 AsyncTask 可能会更容易实现。

    但是,如果你有一个后台线程运行了很长时间,并且需要在任务完成之前将更新发布到视图层次结构中,那么 runOnUiThread 将是一个不错的选择。

    主要区别在于 AsyncTask 要求您等到任务完成才能发布更新。

    编辑: 正如 Geobits 指出的那样,您不必等到任务完成后才能发布更新,因为 AsyncTask 有一个 publishProgress 方法可以做到这一点。

    【讨论】:

    • "关键区别在于..." AsyncTask 有一个onProgressUpdate() 方法,该方法在UI 线程上运行,可以从doInBackground() 中的任何位置通过publishProgress() 调用。说您必须等到任务完成才能发布更新是一种误导。
    • 感谢提醒。
    • 感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多