[問題] 單向綁定不斷新增資料導致app卡頓

看板AndroidDev作者 (阿東)時間3年前 (2021/05/25 15:15), 3年前編輯推噓2(2011)
留言13則, 3人參與, 3年前最新討論串1/2 (看更多)
各位版友好, 最近在開發一支工具要對設備周邊的host進行傳輸,並將收到的結果印在設備上, 一開始在xml裡將TextView單向綁定到ObservableField<String> message,要增加印出的 訊息處理如下, message.set(message.get()+newMessage); 從傳輸到增加資料到message過程都寫在另一個Thread處理, 但執行次數一多,會看到log訊息提示在main thread做太多事情,且app開始卡頓, 後來直接透過Handler,透過binding.layoutId.TextViewId找到目標TextView並用append 函式將訊息印出,不會有先前卡頓的問題... 請問為什麼會有這樣的差別呢?如果要用原先message.set(message.get()+newMessage); 的方式,該怎麼處理才可以避免app卡頓呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.130.16 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1621926908.A.ACB.html ※ 編輯: Dong0129 (42.73.130.16 臺灣), 05/25/2021 15:15:53 ※ 編輯: Dong0129 (42.73.130.16 臺灣), 05/25/2021 15:16:24

05/25 15:19, 3年前 , 1F
非UI的存取不要透過主執行緒執行。
05/25 15:19, 1F

05/25 15:21, 3年前 , 2F
Log印一印,你就知道到底哪些地方沒寫好,其實是主執行
05/25 15:21, 2F

05/25 15:22, 3年前 , 3F
緒在做了,Logcat都會有Thread ID
05/25 15:22, 3F

05/25 23:30, 3年前 , 4F
執行次數的問題的話,我應該會加上收集一定次數再執行,或是
05/25 23:30, 4F

05/25 23:30, 3年前 , 5F
固定描述後執行,這樣應該可以緩解主執行緒的壅塞。
05/25 23:30, 5F

05/25 23:31, 3年前 , 6F
固定秒數,不是固定描述...笨選字。
05/25 23:31, 6F

05/25 23:46, 3年前 , 7F
樓上大大建議的也是,更新頻率高有時不如更新資訊即時
05/25 23:46, 7F

05/27 20:05, 3年前 , 8F
感覺卡頓是因為系統送給你的命令無法即時執行。丟到han
05/27 20:05, 8F

05/27 20:05, 3年前 , 9F
dler可以把工作放到Queue裡面執行。 要優化的簡單方法
05/27 20:05, 9F

05/27 20:05, 3年前 , 10F
就是不丟重複的工作給他,才不會讓UI thread 卡住 。
05/27 20:05, 10F

05/27 20:05, 3年前 , 11F
例如 第三秒你丟一個 然後下一秒又丟一個 這時你可以選
05/27 20:05, 11F

05/27 20:05, 3年前 , 12F
擇留舊的或是丟新的就好,看你的runnable怎麼設計跟使
05/27 20:05, 12F

05/27 20:05, 3年前 , 13F
用狀況
05/27 20:05, 13F
文章代碼(AID): #1WhAFyhB (AndroidDev)
文章代碼(AID): #1WhAFyhB (AndroidDev)