80,471
社区成员




final Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
//如果该消息是本程序所发送的
if(msg.what == 0x1233)
{
//动态地修改所显示的图片
if(!info_server.getText().toString().equals(myAppSocket.getThread().reMassage)) {
info_server.append(myAppSocket.getThread().reMassage + "\n");
}
}
}
};
//定义一个定时器,让该计时器周期性地执行指定任务
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//发送空消息
myHandler.sendEmptyMessage(0x1233);
}
},0,1200);
[/quote]
修改了下,界面能打开了,但连接后,返回MainActivity就退出
myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
//如果该消息是本程序所发送的
if(msg.what == 0x1233)
{
//动态获取传递来的服务信息;
if(isLinked){
info_rec = myAppSocket.getThread().reMassage;
// info_rec="Linked";
}
if(!tempMsg.equals(info_rec)&&isLinked) {
info_server.append(info_rec);
tempMsg = info_rec;
}
}
}
};
//定义一个定时器,让该计时器周期性地执行指定任务
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//发送空消息
myHandler.sendEmptyMessage(0x1233);
}
},0,1200);
主要问题在这句:
info_rec = myAppSocket.getThread().reMassage;send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
// 当用户按下发送按钮后,将用户输入的数据封装成Message
// 然后发送给子线程的Handler
Message msg = new Message();
msg.what = 0x345;
// 获取输入内容,转换为字符,去除换行和回车符号
msg.obj = input.getText().toString().replaceAll("\r\n", "");
myAppSocket.getThread().revHandler.sendMessage(msg);
// 清空input文本框
input.setText("");
info_server.append(myAppSocket.getThread().reMassage + "\n");
} catch (Exception e) {
e.printStackTrace();
}
}
});
但这需要出发send按钮才行!我的目标是不用按钮,实时更新info_server.setText(你线程所获取的新数据)
楼主说得更新应该是这个意思吧,不知道楼主这个代码写在哪里。在获取新数据线程的代码中可不行,需要在UI线程中才能执行,所以需要用Handle来处理 final Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
//如果该消息是本程序所发送的
if(msg.what == 0x1233)
{
//动态地修改所显示的图片
if(!info_server.getText().toString().equals(myAppSocket.getThread().reMassage)) {
info_server.append(myAppSocket.getThread().reMassage + "\n");
}
}
}
};
//定义一个定时器,让该计时器周期性地执行指定任务
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//发送空消息
myHandler.sendEmptyMessage(0x1233);
}
},0,1200);