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

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没有闭包,吹牛逼的一切皆对象,代理机智薄弱,写出来的代码冗长且效率低下,代码量动不动就上几十万,各种框架无数繁琐的配置等等都让人烦不胜烦

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板