我在Samsung Galaxy Nexus上使用Android進行一些OpenGL ES 2.0編碼。在Android中將消息從GLSurfaceView傳遞給MainActivity的最佳實踐?
我已經根據Android OpenGL教程實現了MyRenderer類,但我希望能夠將一些調試信息返回給MainActivity,例如,如果着色器編譯器失敗,則會顯示錯誤消息。不幸的是,我試圖將錯誤信息返回到主要活動的所有方法都失敗了。
起初我只是想讓渲染類本身彈出一個AlertDialogBuilder類的警告對話框,但由於GLSurfaceView.renderer不是正確的類型,所以顯然不起作用。由於GLSurfaceView.renderer不是一項活動,我也無法生成顯示信息的活動。
我的做法則是讓我的MainActivity實現所謂AlertReporter一個接口,只有一個方法:
public interface AlertCallback {
void alertAndDie(String alertString);
}
我實現的方法在我的MainActivity,但每當我有方法做任何事情(產卵一個警告框,創建一個新的文本框活動等...)該程序崩潰。我假設(並可能是錯誤的),這是因爲我從渲染線程調用MainActivity中的方法(創建我的渲染器時GLSurfaceView產生的)。
長話短說,我的問題是這樣的: 將此錯誤信息返回給MainActivity線程以便我可以顯示它的最佳做法是什麼?
作爲一個側面的問題,渲染器中的onCreateSurface方法甚至是處理我的所有openGL初始化(如着色器編譯)的最佳位置?
您應該使用登錄logcat的 – JRowan
你也可以使用一個處理程序中斷glthread – JRowan