除了Android中的主线程之外,是否可以从不同的线程更新UI?

时间:2015-02-16 17:12:36

标签: android multithreading user-interface java-native-interface

我有一些艰难的时间试图解决这个问题。我有一个Activity,但是UI太慢而无法呈现整个屏幕,因为它在主线程上运行。我有两个主要部分要渲染,并希望使用一个单独的线程来渲染这两个部分中的一个。我的问题是:

  • 是否可以从单独的线程更新活动中的UI?如果是这样的话?
  • 是否可以使用C ++和其他线程完成的代码更新UI?

提前致谢。

1 个答案:

答案 0 :(得分:0)

  

UI太慢而无法渲染整个屏幕,因为它在主线程上运行

使用Traceview和StrictMode确定问题的确切位置。例如,由于您“使用多个图像渲染网格”,除非图像已经在内存中,否则应在后台线程上完成图像的加载。有无数的库,如PicassoUniversal Image Loader,提供此功能。

  

是否可以从单独的线程更新活动中的UI?

一般来说,没有。通常这不是问题 - 当尝试在主应用程序线程上加载模型数据(例如图像)时会出现问题。

  

是否可以使用C ++和其他线程完成的代码更新UI?

一般来说,不,如您所述,以View为中心的UI。我假设OpenGL可以使用多个线程进行渲染,但OpenGL不是我的区域。