。Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列。每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与@L_
package co
m.example.thread;
import android
.os
.bundle;
import android
.os.Handler;
import android
.os.Looper;
import android
.os.message;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity
{ private TextView tv;
// 消息处理者
private Handler handler;
private static final int TUR
ntexT = 1;
@Override
protected void onCreate(Bundle savedInstanceStat
E) { super
.onCreate(savedInstanceStat
E);
// setContentView(R.layout.activity_main
); Sy
stem.out.println("主线程----" + Thread.currentThread().getName()
); tv = new TextView(this
); tv.setText("你好"
); setContentView(tv
); // 处理者
handler = new Handler()
{ // handler
message
方法处理handler发送的消息
@Override
public void handle
message(
message msg)
{ super.handle
message(msg
); // msg.
what操作
获取发送什么消息,根据消息的标识,进行不同处理方式
int
what = msg.
what;
if (
what == TUR
ntexT)
{ tv.setText(Sy
stem.currentTimeMillis() + ""
); }
}
};
try
{ //主线程 阻塞 6s 大于
Thread.sleep(
10000);
} catch (InterruptedException e1)
{ // TODO Auto-generated catch block
e1.printStackTrace(
); }
//run
方法执行完毕 线程就死掉
new Thread(new Runnable()
{ @Override
public void run()
{ while
(true) { try
{ Sy
stem.out.println("子线程----"
+ Thread.currentThread().getName()
); Thread.sleep(1000
); // 发送消息
what标识
handler.sendEmpty
message(TUR
ntexT
); } catch (InterruptedException
E) { // TODO Auto-generated catch block
e.printStackTrace(
); }
}
}
}).start(
); }
@Override
public
Boolean onCreateOptionsMenu(Menu menu)
{ getMenuInflater().inflate(R.menu.main,menu
); return true;
}
}
package co
m.example.thread;
import android
.os
.bundle;
import android
.os.Handler;
import android
.os.Looper;
import android
.os.message;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity
{ private TextView tv;
// 消息处理者
private Handler handler;
private static final int TUR
ntexT = 1;
@Override
protected void onCreate(Bundle savedInstanceStat
E) { super
.onCreate(savedInstanceStat
E);
// setContentView(R.layout.activity_main
); Sy
stem.out.println("主线程----" + Thread.currentThread().getName()
); tv = new TextView(this
); tv.setText("你好"
); setContentView(tv
); // 处理者
handler = new Handler()
{ // handler
message
方法处理handler发送的消息
@Override
public void handle
message(
message msg)
{ super.handle
message(msg
); // msg.
what操作
获取发送什么消息,根据消息的标识,进行不同处理方式
int
what = msg.
what;
if (
what == TUR
ntexT)
{ tv.setText(Sy
stem.currentTimeMillis() + ""
); }
}
};
try
{ //主线程 阻塞 6s 大于
Thread.sleep(
10000);
} catch (InterruptedException e1)
{ // TODO Auto-generated catch block
e1.printStackTrace(
); }
//run
方法执行完毕 线程就死掉
new Thread(new Runnable()
{ @Override
public void run()
{ while
(true) { try
{ Sy
stem.out.println("子线程----"
+ Thread.currentThread().getName()
); Thread.sleep(1000
); // 发送消息
what标识
handler.sendEmpty
message(TUR
ntexT
); } catch (InterruptedException
E) { // TODO Auto-generated catch block
e.printStackTrace(
); }
}
}
}).start(
); }
@Override
public
Boolean onCreateOptionsMenu(Menu menu)
{ getMenuInflater().inflate(R.menu.main,menu
); return true;
}
}