第三十四讲:Android Timer计时器 - 火箭發射為例
http://blog.csdn.net/mylzc/article/details/6736988 转载系列:
Android异步处理系列文章索引Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理
Android觀念篇:
1.Android的thread跟Java的thread大同小異,不同的是 Java是從public static void main(String args[]){
}作為一個程式的開頭再去呼叫其他method跟class
Android呼叫class 跟 method間交互應用也是相同,唯一不同的是
Android有四大元件Activity , Service , BroadcastReceiver , Content Provider等
各種元件有各自對應的生命週期,所以情境應用上比Java複雜多了
又舉例來說 Android會用handler來作為UI更新
2.在Android中只要執行會超過5秒的程序,就需要使用thread / handler來處理
3.Thread 裡是無法做任何有關介面的事,所以我們必須倚賴 Handler,可以把它想成介面與執行緒之間的經紀人。
在Android運用到執行序中會有兩種情況
一種是
一次性
Thread thread=
new
Thread(
new
Runnable()
{
@Override
public
void
run()
{
}
});
thread.start();
//開始執行緒
//想暫停的時候
thread.sleep(
3000
);
//毫秒的意思 3000就是3秒 以此類推
//最後不用時
thread.stop();
//停止執行緒
常駐性
//new一個執行緒,progressBar每秒增加5 ,到100%時停止
Thread mThread =
new
Thread(
new
Runnable() {
public
void
run() {
Message message;
String obj=
"run"
;
for
(
int
i=
0
; i <
20
; i++){
try
{
threadCount = (i +
1
) *
5
;
Thread.sleep(
500
);
progressBar.setProgress(threadCount);
message = handler.obtainMessage(
1
,obj);
handler.sendMessage(message);
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
});
mThread.start();
private
Handler handler =
new
Handler(){
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
String MsgString = (String)msg.obj;
if
(MsgString.equals(
"run"
))
{
//do something
if
(threadCount>=
100
){
Toast.makeText(OrderActivity.
this
,
"下載完成!!!!"
,Toast.LENGTH_SHORT).show();
textView.setText(
"100%"
);
}
else
{
textView.setText(threadCount+
"%...."
);
}
}
}
};
Android實務篇:
沒有留言:
張貼留言