2012-06-05 50 views
0

Android专家,我需要一些帮助。我是Android的noob。我有一个应用程序,我需要在主UI线程外部使用画布绘制位图。我偶然发现了SurfaceView类并嘲笑了一个快速演示。我创建了一个独立的位图实例并将其绘制。当发生SurfaceView的OnDraw时,我将该位图复制到SurfaceView中。直到活动结束为止,它会很好地工作,例如,返回到主屏幕。此时,SurfaceView线程似乎停止了,我似乎失去了我正在处理的位图图像。当你回到应用程序,它从头开始。当活动结束时持久位图

我想创建位图图像使用画布二维绘图调用从一个线程,从主UI线程分离出于性能原因。我需要在一段时间内将该位图导入主用户界面。而且我需要保留位图图像,并在活动暂停或停止时继续绘制(以保持当前状态)。

由于您必须在主UI线程中执行所有绘图,因此SurfaceView看起来是唯一的解决方案。但它也不像我希望的那样工作。

我需要一个后台任务或线程,永远不会停止运行,我需要在那里创建一个位图图像,我需要一段时间(比如10赫兹更新)将该位图导入主用户界面。

帮助!我该怎么做呢?

+0

是否为您创建一个单独的'process'工作? –

+0

嗨黑乌鸦,感谢您的超级快速回复。你能详细解释一下吗?你的意思是使用C++,NDK和一个独立的过程?对不起,我还是个小菜鸟。 – Batdude

+0

您可以创建单独的'process',这在'Android Manifest'中没有太多的鼓励。 –

回答

0

使用asynctask将图像绘制到您的UI上。

但是,当应用程序重新打开时,画布需要重新绘制。如果你想保存你创建的位图,你需要将它存储在某个地方。我认为这是可以处理使用缓存:

view.setDrawingCacheEnabled(true); 

否则看着自己管理的位图:

v1.setDrawingCacheEnabled(true); 
bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
+0

谢谢,我刚刚阅读了关于AyncTasks和UI的实际上非常及时!我也会研究缓存。非常感谢! – Batdude

+0

没问题,很高兴我能帮上忙。欢迎来到StackOverflow。尽管如此,您应该接受将其从“未答复”列表中删除的答案。 – bhekman

+0

好的,我不知道。我想我想等一下,看看是否还有其他想法。然后我会关闭它。 – Batdude