如何解决尝试调用实现客户端线程的类时强制关闭
| 我在android上有一个客户端服务器应用程序,都在同一台计算机上运行。 在我的客户端应用程序的第一个活动中,我尝试调用应该连接到服务器应用程序的客户端类,但是我被强制关闭。 这是我在应用程序的第一个活动中如何调用客户端类的方法:Thread cThread=new Thread(new ClientThread());
cThread.start();
这是我的客户课程:
public class ClientThread implements Runnable{
private Handler handler=new Handler();
Socket socket;
private TextView clientState;
public void run()
{
try
{
InetAddress serverAddr=InetAddress.getByName(\"10.0.2.2\");
handler.post(new Runnable(){
public void run(){
clientState.setText(\" try to connect!\");
}
});
socket=new Socket(serverAddr,8080);
//connected=true;
handler.post(new Runnable(){
public void run(){
clientState.setText(\"Connected!\");
}
});
}
catch(Exception e){
handler.post(new Runnable(){
public void run(){
clientState.setText(\"Error\");
}
});
e.printStackTrace();
}
}
protected void onStop() {
super.onStop();
try {
// make sure you close the socket upon exiting
//out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
有人可以告诉我什么地方出了问题,或者至少给了我一个想法。
我应该说的一件事是,当客户端类集成到我的第一个活动中时,我的客户端可以正常工作-它连接到服务器(我的意思是,最初我没有客户端类完全在第一个活动中……而且它工作正常)。
我在这里了解更多详情!
预先谢谢你!
解决方法
没有堆栈跟踪,它看起来像崩溃了,因为您没有初始化textview。
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.mytextview);
}
public class ClientThread extends Thread {
...// Do NOT init textview
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。