private void eastablish_connection(){
// TODO Auto-generated method stub
make();
while (check)
{
if ( th == null)
{
make();
}
th.start();
try
{
th.join();
}
catch(Exception e)
{
Log.d("failed", "joining");
}
set();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
th.join();
}
catch(Exception e)
{
Log.d("failed", "joining");
}
th.interrupt();
th = null;
}
public void set()
{
fridge1 = (TextView) findViewById(R.id.textView1);
fridge1.setText("indoor = " + my_connection.get_indoor_temperature());
}
public void make(){
my_connection = new Make_Connection();
th = new Thread(my_connection);
}
我需要的是在线程完成后不断更新我的文本视图,但它根本没有显示任何内容。设置函数被正确调用但它没有显示任何内容。?请帮助
答案 0 :(得分:0)
你不能在UI线程中拥有无限循环。您在屏幕上看不到任何内容,因为您的UI线程在您的infintie循环中被锁定。
如果您想每X秒执行一次操作,可以使用CountDownTimer
答案 1 :(得分:0)
你可以使用简单的逻辑......
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(3000);
h.sendEmptyMessage(0);
} catch (Exception e) {
// TODO: handle exception
}
}
}).start();
Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
textView.setText(text);
}
};
只需使用线程注册处理程序类,并在线程休眠3秒后在处理程序类中更新textview。
答案 2 :(得分:0)
试试这个:
Handler h=new Handler();
Runnable runn=new Runnable() {
@Override
public void run() {
// update text view here
h.postDelayed(runn, 2000);
}
};
private void startUpdating() {
h.postDelayed(runn, 0);
}