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点击之后出现上面两行错误,虚拟机中显示加载失败,上网搜索好像是说虚拟机中禁止了在主线程中进行网络请求,不是很明白其中的解释,希望得到帮助。
业精于勤,荒于嬉;行成于思,毁于随。
既然这样,你把网络请求的代码放子线程试试呗
网络请求是一个耗时操作,举个例子,你用网易新闻app加载新闻,网络不好的时候会加载很久,假如这个网络请求操作在Activity中执行,那么会一直等待返回结果,导致这个Activity卡在此处,无法响应其他的操作,也就是常说的主线程被阻塞导致ANR,所以需要重新开一个线程去进行网络访问,如下:
protected void onCreate(Bundle savedInstanceState){ ... new Thread(new Runnable() { @Override public void run() { //此处应为你网络请求的代码,通过Hanlder传递给主线程Activity处理 } }).start(); }
Android现在是不能在主线程中进行网络操作的,网络操作都需要放到子线程中去执行,还有一些别的耗时操作也都需要放到子线程中去执行,如果你把那些耗时操作都放到主线程中去执行的话,那么当主线程执行到这些耗时操作这里时就会阻塞在这里,对用户体验不好,而且时间长了会报ANR异常。
每种语言都有缺点和有点,比如java没有闭包,吹牛逼的一切皆对象,代理机智薄弱,写出来的代码冗长且效率低下,代码量动不动就上几十万,各种框架无数繁琐的配置等等都让人烦不胜烦
既然这样,你把网络请求的代码放子线程试试呗
网络请求是一个耗时操作,举个例子,你用网易新闻app加载新闻,网络不好的时候会加载很久,假如这个网络请求操作在Activity中执行,那么会一直等待返回结果,导致这个Activity卡在此处,无法响应其他的操作,也就是常说的主线程被阻塞导致ANR,所以需要重新开一个线程去进行网络访问,如下:
Android现在是不能在主线程中进行网络操作的,网络操作都需要放到子线程中去执行,还有一些别的耗时操作也都需要放到子线程中去执行,如果你把那些耗时操作都放到主线程中去执行的话,那么当主线程执行到这些耗时操作这里时就会阻塞在这里,对用户体验不好,而且时间长了会报ANR异常。
每种语言都有缺点和有点,比如java没有闭包,吹牛逼的一切皆对象,代理机智薄弱,写出来的代码冗长且效率低下,代码量动不动就上几十万,各种框架无数繁琐的配置等等都让人烦不胜烦