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 点击之后出现上面两行错误,虚拟机中显示加载失败,上网搜索好像是说虚拟机中禁止了在主线程中进行网络请求,不是很明白其中的解释,希望得到帮助。
La requête réseau est une opération qui prend du temps. Par exemple, si vous utilisez l'application NetEase News pour charger des actualités, le chargement prendra beaucoup de temps lorsque le réseau n'est pas bon. Si cette opération de requête réseau est exécutée dans Activité, il attendra que le résultat soit renvoyé, ce qui aura pour résultat Cette activité est bloquée ici et ne peut pas répondre aux autres opérations. On dit souvent que le thread principal est bloqué et provoque un ANR, il est donc nécessaire de rouvrir un thread pour accéder au réseau, comme suit :
protected void onCreate(Bundle savedInstanceState){
...
new Thread(new Runnable() {
@Override
public void run() {
//此处应为你网络请求的代码,通过Hanlder传递给主线程Activity处理
}
}).start();
}
Android ne peut actuellement pas effectuer d'opérations réseau dans le thread principal. Les opérations réseau doivent être exécutées dans des sous-threads, et certaines autres opérations fastidieuses doivent également être exécutées dans des sous-threads. les opérations sont exécutées dans le thread principal, puis lorsque le thread principal exécute ces opérations fastidieuses, il sera bloqué ici, ce qui n'est pas bon pour l'expérience utilisateur, et une exception ANR sera signalée après une longue période.
Chaque langage a des défauts et des avantages. Par exemple, Java n'a pas de fermetures. Tout est un objet. L'agent est faible en termes d'esprit. Le code écrit est long et inefficace. Il existe différents frameworks. D'innombrables configurations compliquées et ainsi de suite sont très ennuyeuses
Dans ce cas, essayez de mettre le code de la requête réseau dans un sous-thread
La requête réseau est une opération qui prend du temps. Par exemple, si vous utilisez l'application NetEase News pour charger des actualités, le chargement prendra beaucoup de temps lorsque le réseau n'est pas bon. Si cette opération de requête réseau est exécutée dans Activité, il attendra que le résultat soit renvoyé, ce qui aura pour résultat Cette activité est bloquée ici et ne peut pas répondre aux autres opérations. On dit souvent que le thread principal est bloqué et provoque un ANR, il est donc nécessaire de rouvrir un thread pour accéder au réseau, comme suit :
Android ne peut actuellement pas effectuer d'opérations réseau dans le thread principal. Les opérations réseau doivent être exécutées dans des sous-threads, et certaines autres opérations fastidieuses doivent également être exécutées dans des sous-threads. les opérations sont exécutées dans le thread principal, puis lorsque le thread principal exécute ces opérations fastidieuses, il sera bloqué ici, ce qui n'est pas bon pour l'expérience utilisateur, et une exception ANR sera signalée après une longue période.
Chaque langage a des défauts et des avantages. Par exemple, Java n'a pas de fermetures. Tout est un objet. L'agent est faible en termes d'esprit. Le code écrit est long et inefficace. Il existe différents frameworks. D'innombrables configurations compliquées et ainsi de suite sont très ennuyeuses
.