[問題] ListView非同步更新的實作
開發層: 應用
問題:
問題的起頭只是因為我剛開始寫了一個需要接API並用ListView輸出的小程式,
可是隨後我發現只要行動網路不夠穩的時候連接API會讓整個程式畫面在輸出
前暫時卡住。
於是稍微檢視一下,問題主要出現在我把查詢動作寫在onCreate中,
這麼一來就代表了他會等到查詢動作結束後才會輸出畫面,
我稍微參考了一下官網的LifeCycle,提到Activity在走到onStart時代表了
畫面已經輸出,於是我把查詢動作移進了onStart....
不過結果是一樣的,查詢動作還是跑在畫面輸出前
接著我在逛了一下官方的開發者論壇,有人提到了因為Activity從onCreate到
onDestroy基本上是同一個執行緒在處理,所以無論怎麼移原則上都沒辦法改變
這個結果,建議分裂出一個執行緒同步去處理
so,我就乖乖的照著做了,New了一個Thread去處理,把查詢寫在run裡面之後
(Thread.start()擺在onCreate中)
開斷點debug下去看,順序是有達到我的要求..
不過問題來了,查詢完要將結果寫入ListView時它竟然跳出Exception!!!
我看了一下錯誤訊息...是一串英文(廢話) 大意是說不能用多出來的執行緒去
操作原本Layout上的物件
看到差點沒翻桌了...有人能給點建議嗎?
參考: 官網文件及論壇
補充說明: 其實用BuittonClick去觸發更新ListView也不是不行啦...但就是有種
輸掉的感覺XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.47.154
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章