簡體   English   中英

何時調用GLSurfaceView方法onPause()和onResume()

[英]When to call GLSurfaceView methods onPause() and onResume()

我反復讀過,在封閉活動的onPause()和onResume()方法期間,必須為GLSurfaceview調用onPause()和onResume()。 我認為這是為了停止並重新啟動渲染線程以節省資源。 但是,當我記錄渲染線程的onDraw方法的每次迭代時,我看到當按下主屏幕或后退按鈕,並且當我返回到應用程序時,onDraw停止被調用,先調用onSurfaceCreated和onSurfaceChanged,然后調用onDraw呼叫恢復-即使在刪除了對應活動方法中對GLSurfaceview的onPause()和onResume()方法的調用之后,也是如此。 如果渲染線程沒有停止,我如何看到此行為? 即使不再調用onDraw,渲染線程是否仍然可以存活? 並且,如果活動失去焦點時呈現線程自動關閉,那么為什么必須調用onPause()和onResume()的GLSurfaceview版本?

看起來像是GLSurfaceView中的錯誤,它通過容忍您忘記調用onResume()onPause()來試圖變得聰明。 我不確定這是否是故意的。

忽略呼叫幾乎總是可行的,但是在某些情況下可能導致奇怪的行為並崩潰。 我不確定這些情況是什么,但是我已經追溯到一些奇怪的崩潰,原因是缺少onResume() / onPause()調用。 當您不調用狀態機時, GLSurfaceView的狀態機會有些混亂–看起來“自動”恢復和暫停的后備邏輯在100%的情況下不會觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM