PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   [?程式設計問題]請問Multi Thread問題 (https://www.pcdvd.com.tw/showthread.php?t=1064737)

公不 2014-11-29 01:03 AM

[?程式設計問題]請問Multi Thread問題
 
請問ANdroid 的 Multi Thread問題

我有一個Object

這個Object裡面有很多SubObject

而SubObject又有很多SubSubObject

這些SubObject都要使用Object設置的command來詢問取得

而這個command本身繼承了 Asynctask達成了

所以可以算是一個Thread

我的問題是

我已經用command問到了Object有多少的SubObject

然後要更新UI

但是為了利用時間

所以更新時

要用command再去問有多少SubSubObject

如果直接在UI更新後面

接著寫 {用command再去問有多少SubSubObject}

就會讓UI更新比較慢

(看起來讓UI的主Thread分工去做的關係)

所以就想說

那用
new Thread(new Runnable(){
@Override
public void run() {
}
}).start();

來動作好了

結果

因為有很多的SubObject

所以需要用到for迴圈

然後每一個SubObject就會去觸發一個新的command

因此這樣就會導致CRASH

看LOG是說 Thread無法產生handler

請問我該如何寫?

謝謝

anderson1127 2014-11-29 06:11 PM

我先聲明,我只懂得multi-thread的運作原理,不懂android Multi Thread (programming)

看起來,樓主的使用方式,很像是把process 當做thread , 因此當memory resource不是很足的情況下
因此而Crash ,是嗎??

所謂的command 我猜是OS本身的可執行程式(指令) , 是嗎??

789w 2014-11-29 06:59 PM

建議你回學校重唸OS :agree:

blin1115 2014-11-29 07:14 PM

看起來是兩個 thread..
thread(A) 與 thread(B)
A 是 main/UI thread
B 是用來跑 "問有幾個 subsubObj."

嗯..
會不會是 "command詢問" 的問題..
它沒辦法及時完成(回答有幾個?)..
要不要用 sendMessage 的方式來問有幾個 subsubObj?
這樣比較婉轉... :laugh:

再不然就先把 for loop 拿掉..
看看只跑一個 "SubObject就會去觸發一個新的command" 會不會 crash..
一點意見, 參考看看..

space 2014-11-29 07:50 PM

http://www.itkee.com/developer/detail-340a.html

因為沒看到程式碼,所以不知道是不是一樣的問題,可參考看看上面的網頁

網頁最後有一段總結:
因爲在Android中不能在子綫程中來刷新UI綫程,而可以在子綫程中添加hander來發送消息更新綫程。


所有的時間均為GMT +8。 現在的時間是07:35 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。