2012-06-05 101 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