林具有API 25 IM在我的Nexus 6P直接针对API 25套接字和线程问题7.1.1如何插座的Android API /线程25
当试图在端口我的节点服务器进行通信8124我初始化一个新的线程并初始化一个插座,但我要么得到一个networkonmainthreadexception
public class MainActivity extends AppCompatActivity {
private Socket socket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Button LoginButton = (Button) findViewById(R.id.button2);
LoginButton.setOnClickListener(
new View.OnClickListener(){
@Override
public void onClick(View v){
TryLogin(v);
}
}
);
}
public void TryLogin(View v){
new Thread(new Runnable() {
@Override
public void run() {
try {
socket = new Socket("192.168.1.57", 8124);
Log.i("SOCKET", "Was the thread started?");
} catch(UnknownHostException e1){
} catch (IOException e1){
}
}
}).start();
}
}
当我调用start()方法我从来没有看到“是线程开始了吗?”。 logcat中也没有引发任何错误。但是当我改变运行()我得到networkonmainthreadexception错误。它好像有什么变化一样接缝。我证实使用节点客户端显示了到我的节点服务器的tcp连接。
忽略线程策略我正在测试 – lzRipTide3zl
请完全删除StrictMode。 – greenapps
你不应该像你所看到的那样,因为它不再是线程,所以当然不应该调用run。当每个人都攻击NetworkOnMainThreadException时,你会发出令人困惑的帖子,你可以在下次再写这个吗?,而你有一个SocketTimeoutException。 – greenapps