怎么进入子线程调试

worena222 2017-09-22 10:48:49
初学android,通过socket向目标端口发送数据。接收端是网上下的tcpclientserver这个软件。代码参考的http://blog.csdn.net/x605940745/article/details/17001641 方法1。可惜服务端软件显示连接正常,就是收不到测试数据。于是想通过调试模式看看发生了什么。我把断点打到button事件里或者放到thread里,run()方法里,无论F7还是F8都是直接就过去了。怎么进入线程里调试。
定义线程
 class MyThread extends Thread {

public String txt1;

public MyThread(String str) {
txt1 = str;
}

@Override
public void run() {
//定义消息
Message msg = new Message();
msg.what = 0x11;
Bundle bundle = new Bundle();
bundle.clear();
try {
//连接服务器 并设置连接超时为5秒
socket = new Socket();
socket.connect(new InetSocketAddress("192.168.1.103", 8080), 15000);

Looper.prepare();
Toast.makeText(LoginActivity.this,"ok",Toast.LENGTH_SHORT).show();
Looper.loop();

//获取输入输出流
OutputStream ou = socket.getOutputStream();
BufferedReader bff = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
//读取发来服务器信息
String line = null;
buffer="111";
while ((line = bff.readLine()) != null) {
buffer = line + buffer;
}

//向服务器发送信息
ou.write("android 客户端".getBytes("gbk"));
ou.flush();
bundle.putString("msg", buffer.toString());
msg.setData(bundle);
//发送消息 修改UI线程中的组件
myHandler.sendMessage(msg);
//关闭各种输入输出流
bff.close();
ou.close();
socket.close();
} catch (SocketTimeoutException aa) {
//连接超时 在UI界面显示消息
bundle.putString("msg", "服务器连接失败!请检查网络是否打开");
msg.setData(bundle);
//发送消息 修改UI线程中的组件
myHandler.sendMessage(msg);
} catch (IOException e) {
e.printStackTrace();
}
}
}


按钮
   bt.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Toast.makeText(LoginActivity.this,"test",Toast.LENGTH_SHORT).show();
// Thread thread=new Thread();
geted1 ="test";
outstr="client:"+geted1+"\n";
// txt1.append("client:"+geted1+"\n");
new MyThread(geted1).start();
}
});
...全文
396 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liweicai137 2017-10-12
  • 打赏
  • 举报
回复
class MyThread extends Thread { public String txt1; public MyThread(String str) { txt1 = str; } @Override public void run() { //定义消息 Message msg = new Message(); msg.what = 0x11; Bundle bundle = new Bundle(); bundle.clear(); try { //连接服务器 并设置连接超时为5秒 socket = new Socket(); socket.connect(new InetSocketAddress("192.168.1.103", 8080), 15000); Activity.this.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(LoginActivity.this,"ok",Toast.LENGTH_SHORT).show(); } }); //获取输入输出流 OutputStream ou = socket.getOutputStream(); BufferedReader bff = new BufferedReader(new InputStreamReader( socket.getInputStream())); //读取发来服务器信息 String line = null; buffer="111"; while ((line = bff.readLine()) != null) { buffer = line + buffer; } //向服务器发送信息 ou.write("android 客户端".getBytes("gbk")); ou.flush(); bundle.putString("msg", buffer.toString()); msg.setData(bundle); //发送消息 修改UI线程中的组件 myHandler.sendMessage(msg); //关闭各种输入输出流 bff.close(); ou.close(); socket.close(); } catch (SocketTimeoutException aa) { //连接超时 在UI界面显示消息 bundle.putString("msg", "服务器连接失败!请检查网络是否打开"); msg.setData(bundle); //发送消息 修改UI线程中的组件 myHandler.sendMessage(msg); } catch (IOException e) { e.printStackTrace(); }
见识决定命运 2017-09-25
  • 打赏
  • 举报
回复
你的断点应当打到RUN里。
雨焰 2017-09-25
  • 打赏
  • 举报
回复
子线程里面不能做UI操作,比如Toast。你要通过handle来操作

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧