2011-06-08 99 views
0

在我進入其他活動之前,我正在清理一個活動中加載的位圖。如何停止在視圖上調用onDraw()函數?

如:

pic1 = null; 
System.gc(); 
nextActivityIntent = new Intent(ThisActivity,NextActivity.class); 
ThisActivity.startActivityForResult(nextActivityIntent,123);  

但問題是系統後,我稱之爲 「PIC1 = NULL」 要求的onDraw一些時間。當它發生時,應用程序崩潰並指向NullPoint異常。

出租車任何人都建議我在設置「pic1 = null」後如何停止調用onDraw()。我可以使用synchornized來做到這一點。

+0

也許設置可見性消失?只是一個瘋狂的猜測。 – icyerasor 2011-06-08 20:55:37

回答

1

您可以嘗試view.setWillNotDraw(true);link here),但我不確定它會阻止它。

請注意,如果您的第一個活動將完成,則無需將該位圖設置爲null,也無需致電System.gc();。活動被破壞後,位圖將被恢復。

如果由於某種原因您仍然希望這樣做,您應該在onDestroy()回調中執行此操作以避免任何繪圖問題。檢查Activity lifecycle瞭解更多詳情。

+0

謝謝你的詳細解答。它並沒有真正的破壞。它只是進入onPause狀態。任何方式,我設法在問題領域添加一個try catch並解決它。 – dinesh707 2011-06-08 21:25:38

+0

你能否詳細說明你是如何解決這個問題的。我也有類似的情況,我只想在設置一個特定標誌後調用ondraw,否則它應該保持暫停狀態 – gpuguy 2012-05-08 13:13:01