java - 照着第一行代码第二版敲的前两部分代码,提示报错
迷茫
迷茫 2017-04-18 10:34:19
0
4
629

E/EGL_emulation: tid 14967: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH)
W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x93d4c080, error=EGL_BAD_MATCH
点击之后出现上面两行错误,虚拟机中显示加载失败,上网搜索好像是说虚拟机中禁止了在主线程中进行网络请求,不是很明白其中的解释,希望得到帮助。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(4)
洪涛

既然這樣,你把網路請求的程式碼放子執行緒試試唄

Peter_Zhu

網路請求是一個耗時操作,舉個例子,你用網易新聞app加載新聞,網絡不好的時候會加載很久,假如這個網絡請求操作在Activity中執行,那麼會一直等待返回結果,導致這個Activity卡在此處,無法響應其他的操作,也就是常說的主線程被阻塞導致ANR,所以需要重新開一個線程去進行網絡訪問,如下:

protected void onCreate(Bundle savedInstanceState){
...

 new Thread(new Runnable() {
            @Override
            public void run() {          
             //此处应为你网络请求的代码,通过Hanlder传递给主线程Activity处理
            }
        }).start();
}
黄舟

Android現在是不能在主執行緒中進行網路操作的,網路操作都需要放到子執行緒中去執行,還有一些別的耗時操作也都需要放到子執行緒中去執行,如果你把那些耗時操作都放到主執行緒去執行的話,那麼當主執行緒執行到這些耗時操作這裡時就會阻塞在這裡,對使用者體驗不好,而且時間長了會報ANR異常。

小葫芦

每種語言都有缺點和有點,比如java沒有閉包,吹牛逼的一切皆對象,代理機智薄弱,寫出來的代碼冗長且效率低下,代碼量動不動就上幾十萬,各種框架無數繁瑣的配置等等都讓人煩不勝煩

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板