表面被破壞


表面被破壞

文章插圖
大家好,小耶來為大家解答以上的問題 。表面被破壞這個很多人還不知道,現在讓我們一起來看看吧!
1、今天看別人的代碼,突然有個疑問,surfaceDestroyed這個函數什么時候被調用呢?上網搜了一番,基本都說是surface被銷毀的時候 , 才會調用surfaceDestroyed 。
2、問題又來了surface什么時候被銷毀呢 , 大家都知道surface是surfaceview的一個專門用于畫圖的接口,所以當surfaceview的對象銷毀時,surface一定也銷毀 , 這時surfaceDestroyed一定會調用 。
3、但是,我看的那個程序明明沒有銷毀surfaceview了啊 。
4、分步調試了一下結果發現一個現象:有兩個繼承surfaceview的類分別是 svA和svB這連個類分別定義了各自的對象AView和BView 。
5、假設現在activity設置的是AView這個對象,也就是說現在用AView的surface呢 。
6、如果這時在activity執行一下代碼:setContentView(Bview);這時,Aview中的surfaceDestroyed就會被調用,因為現在Bview的surface要接管Aview中的surface,Aview的surface就會銷毀,這時必然要調用A的surfaceDestroyed函數 。
7、在這里只是說明一種surfaceDestroyed被調用的情況,因為個人能力有限,只能寫到自己發現的一些東西 。
8、這時第一次在論壇上寫一些東西,希望以后能堅持下去,在接受別人幫助的同時來幫助別人 。
9、最后把Android幫助文檔surfaceDestroyed調用條件,老外寫的簡單易懂的原文發過來 。
10、This is called immediately before a surface is being destroyed. After returning from this call, you should no longer try to access this surface. If you have a rendering thread that directly accesses the surface, you must ensure that thread is no longer touching the Surface before returning from this function大家都知道surface是surfaceview的一個專門用于畫圖的接口,所以當surfaceview的對象銷毀時,surface一定也銷毀,這時surfaceDestroyed一定會調用 。
11、有兩個繼承surfaceview的類分別是 svA和svB這連個類分別定義了各自的對象AView和BView 。
12、假設現在activity設置的是AView這個對象,也就是說現在用AView的surface呢 。
【表面被破壞】13、如果這時在activity執行一下代碼:setContentView(Bview);這時,Aview中的surfaceDestroyed就會被調用,因為現在Bview的surface要接管Aview中的surface,Aview的surface就會銷毀 , 這時必然要調用A的surfaceDestroyed函數 。
本文到此分享完畢,希望對大家有所幫助 。