Android - 非UI线程的Offscreen绘图

时间:2011-11-27 18:59:17

标签: android multithreading android-canvas

短篇小说

是允许的,还是我需要使用UI线程?

编辑:对官方Android文档中某个地方的引用将是理想的。

长版

Android文档明确指出,不允许“从UI线程外部访问Android UI工具包”。

另一方面,似乎允许从工作线程创建Bitmap对象,至少它是在示例代码中完成的: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html 显然,就线程而言,Bitmap类不被视为“UI工具包”的一部分。

从非ui线程调用时,我有一段似乎的代码。它涉及使用Bitmap.createBitmap(int,int,Bitmap.Config),新的Canvas(位图),Typeface.create()和文本绘图。我的代码没有引用任何View对象。

有人能指出我的文档,说我可以从后台线程做这些事情吗?或者这会导致随机崩溃?

3 个答案:

答案 0 :(得分:3)

UI工具包是指Google提供的按钮,标签,列表视图等UI。你不能从非ui线程访问它们主要是因为它们不是线程安全的。

您正在做的不是在UI工具包上,而是在允许(实际上应该允许)从非ui线程访问的低级Canvas上。这种机制一直用于游戏开发。所以我相信你是安全的。

答案 1 :(得分:0)

必须在UI线程上进行更新视图,或者从具有post函数的远程线程(基本告诉UI线程远程线程想要完成某些事情)进行更新视图,这是View类的一部分。

答案 2 :(得分:0)

它应该是合法的,因为位图只是在你绘制它们之前就自己坐在记忆中。

我正在研究游戏开发,似乎有一些线程也在更新UI(使用类似的内存渲染技术)