Re: [問題] 鎖住main thread的方法
※ 引述《KiroKu ( who)》之銘言:
: 我開了其他thread去下載東西
: 然後main thread要等
是指UI Thread嗎?
那千萬不要這麼做.........
首先,妳可以這樣.....
Thread t = new Thread(
new Runnable()
{
void run()
{
// 下載 (略)
runonuithread(new Runnable()
{
void run()
{
//顯示下載完成的訊息。 (略)
}
}
);
}
}
);
t.start();
應該看不懂吧?
正常人應該是很難在一瞬間理解包了這麼多層物件啦.....
簡單來講,兩個重點
1.千萬不要把UIThread卡住
只要五秒沒回應,系統就會跳出視窗說這個程式沒有回應,問使用者要不要關掉他
可以打一行 systemclock.sleep(10000) 試試看
(這東西跟Thread.sleep(10000)一樣,只是不用try... catch... 攔截錯誤)
2.非UI執行緒不可以變更UI執行緒的Android物件
Android到底有哪些東西不可以讓別的執行緒碰我也不清楚
但最基本的 textview.settext("下載完成");
是一定不行的
如果是別的執行緒要變更UI執行緒的東西
就只能用runonuithread(runnable);
把runnable丟進UI執行緒裡去執行,這樣才能變更UI執行緒裡的東西
以上,重點就這兩個。
那兩個重點結合一下就是上面那個包的好幾層的東西
只是平時在寫的時候才不會把那些全部都寫在一起.....
還有,android SDK好像有推出個物件可以直接在別的執行緒執行
等執行完才會用UI thread去執行顯示的動作
不過我沒記那個物件的名字....
: 目前寫法是
: Dialog dling=new Dialog(context);
: dling.show();
: Thread t=new Thread(...);
: t.start();
: t.join();
: dling.dismiss();
: 可是dialog沒有顯示出來
: 有沒有其他方法呢?
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.233.159.35
推
03/31 00:24, , 1F
03/31 00:24, 1F
→
03/31 01:15, , 2F
03/31 01:15, 2F
→
03/31 01:15, , 3F
03/31 01:15, 3F
推
04/01 01:19, , 4F
04/01 01:19, 4F
→
04/01 01:19, , 5F
04/01 01:19, 5F
推
04/01 12:35, , 6F
04/01 12:35, 6F
→
04/01 12:50, , 7F
04/01 12:50, 7F
→
04/01 12:50, , 8F
04/01 12:50, 8F
→
04/01 12:50, , 9F
04/01 12:50, 9F
→
04/01 12:50, , 10F
04/01 12:50, 10F
→
04/01 12:50, , 11F
04/01 12:50, 11F
推
04/01 14:50, , 12F
04/01 14:50, 12F
推
04/01 16:49, , 13F
04/01 16:49, 13F
→
04/01 19:33, , 14F
04/01 19:33, 14F
→
04/01 19:34, , 15F
04/01 19:34, 15F
→
04/01 19:34, , 16F
04/01 19:34, 16F
→
04/01 19:34, , 17F
04/01 19:34, 17F
→
04/01 19:35, , 18F
04/01 19:35, 18F
→
04/01 19:35, , 19F
04/01 19:35, 19F
→
04/02 15:24, , 20F
04/02 15:24, 20F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章
34
95