繁体   English   中英

奇怪的networkonmainthread异常:仅在银河系关系上而不在模拟器中

[英]weird networkonmainthread exception: only on galaxy nexus and not in the emulator

在我的Android应用程序中,我使用线程从Internet下载图像,但是由于某些原因,当我在银河系中运行该应用程序时,会抛出networkonmainthread异常,但如果我在模拟器中运行该应用程序则不会抛出该异常(已测试Android 2.3版)。 3和4.0.3)。

Thread ImageLoaderThread = new Thread(new Runnable() {
public void run() {

 bitmap= DrawableManager.fetchDrawable(URL);

 });

因为当我直接在启动时启动线程时,GUI启动缓慢,所以我得到的印象是该线程确实在GUI线程上运行...但是为什么?

这取决于您的建造方式。 为设备构建时,您正在使用Honeycomb SDK (适用于Android 3.0及更高版本)进行构建。 较旧的SDK永远不会抛出NetworkOnMainThreadException

您没有为模拟器使用相同的SDK,至少在构建要在2.3.3上进行测试时没有。 如果在2.3.3和4.0.3上进行测试时使用相同的构建配置,则将完全解释您看到的所有结果。

从来都不认为在主线程上访问网络是一种好习惯(担心UI响应性,因为在等待网络响应时没有其他线程可以为UI提供服务),但是直到Honeycomb才在API中严格禁止使用它。

阅读本教程 ,将您的网络访问权限移至AsyncTask

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM