標籤:cocos2d cocos2dx android sdk
簡單說說UI線程 :在Android中,有個非常重要的傢伙非常霸道,那就是UI線程。這霸道之一:不能被阻塞。 之二:系統對每一個組件的調用都從UI線程分發出去。
簡單說說openGL線程:但凡cocos2dx 啟動的繪製線程都是openGL線程。就這麼多
任何SDK介面的調用,必須從UI線程中調用,所以需要放到主線程中。如果我們直接從GL線程中調用,輕則調用不了,重者程式蹦死。
解決辦法:
得到主線程的handler,這裡簡單說一種,就是在onCreate中new一個靜態handler。
或者 new Handler(Looper.getMainLooper()),且叫 mainHandler吧,
啟動一個線程,
Thread sendThread=new Thread(new Runnable(){public void run() {mainHandler.post(sendRun);}});
public Runnable sendRun=new Runnable() {@Overridepublic void run() {////這裡就可以調用sdk裡面的東西了
}};
<span style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px; line-height: 27px;">如何從UI線程中調用OpenGL線程呢,直接調用,我以前也幹過,感覺沒什麼問題被發現(he he),如果發現了問題我覺得還是這麼調用的好 </span>
Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {public void run() {<span style="white-space:pre"></span>//回調什麼馬的}});
至於想知道,jni native什麼的 還請出門右拐,不送
<cocos2dx 隨記> 關於cocos2dx接Android sdk的一些坑