Java android.os.NetworkOnMainThreadException问题
我想在我的Android应用程序中打开一个套接字,从服务器读取文件 我让服务器与模拟器在同一台计算机上运行,我在Android外部进行了测试,以确保连接时没有防火墙问题或其他问题 下面是我遇到问题的代码。它将打印IP地址,后跟streamm000。此时,它抛出一个Java android.os.NetworkOnMainThreadException问题,java,android,sockets,Java,Android,Sockets,我想在我的Android应用程序中打开一个套接字,从服务器读取文件 我让服务器与模拟器在同一台计算机上运行,我在Android外部进行了测试,以确保连接时没有防火墙问题或其他问题 下面是我遇到问题的代码。它将打印IP地址,后跟streamm000。此时,它抛出一个android.os.NetworkOnMainThreadException 另外,另一个toast给我NULL 这是我的密码 toast("IP="+getIP()); try { toast("c
android.os.NetworkOnMainThreadException
另外,另一个toast
给我NULL
这是我的密码
toast("IP="+getIP());
try {
toast("created stream00000");
so=new Socket("10.50.1.25", 80);
toast("created stream111111");
oos=new ObjectOutputStream(so.getOutputStream());
toast("created stream2222");
dos=new DataOutputStream(so.getOutputStream());
//oos.close();
toast("created stream33333");
}
catch(Exception e){
toast(e.getCause() +"problem with this bla bla is opensteam");
toast(e.getMessage()+"problem with this bla bla is opensteam");
Log.v(e+"problem ","with this bla bla is opensteam");
}
抛出
networkMainThreadException
,因为在蜂巢和更高版本中,您必须在与主显示Thread
分开的线程上执行网络操作
请参见此处的描述
因此,我的建议是将您的代码移动到一个新的
可运行类中,然后创建一个线程来执行它。您的代码无法回答您的问题。但看起来您正在主UI线程上执行网络操作。这在较新的API级别中是不允许的。当您尝试执行此操作时,它将抛出此异常
您需要生成一个不同的线程,并在那里执行网络操作。我会尝试。非常感谢。我只是把它放在AsyncTask和doInBackground中,但结果仍然相同。我要试试这根线,就是这样!然后我不得不处理我的打印件。它不喜欢把它们放在一根线里。非常感谢。如果您的问题已得到回答,或者不再有效,请“勾选”以选择最合适的答案,以便所有人都知道问题已得到解决。谢谢