工作中遇到的坑(二)
為什麼Service和Activity都執行在主執行緒卻無法確定其執行執行緒呢?
因為有MessageQueue的存在,執行緒都是按在新增到MessageQueue的時間來順序執行程式碼塊。所以Service和Activity即使在同一個執行緒,因為事件加入時機不同,兩者之間的執行順序也不同,只能保證Activity內部和Service內部是順序的,外部順序不一定。
getAdapterPosition和getLayoutPosition的區別
OnBindViewHolder中的position不能直接傳入onItemClickListenter中,最好用getAdapterPosition
getLayoutPosition和getAdapterPosition(比較極端情況下才會出問題,比如使用者手機卡,瘋狂點選)
具體區別就是adapter和layout的位置會有時間差(<16ms), 如果你改變了Adapter的資料然後重新整理檢視, layout需要過一段時間才會更新檢視, 在這段時間裡面, 這兩個方法返回的position會不一樣.
另外答案還提到, 在notifyDataSetChanged之後並不能馬上獲取Adapter中的position, 要等佈局結束之後才能獲取到.
而對於Layout的position, 在notifyItemInserted之後, Layout不能馬上獲取到新的position, 因為佈局還沒更新(需要<16ms的時間重新整理檢視), 所以只能獲取到舊的, 但是Adapter中的position就可以馬上獲取到最新的position.
資源依賴問題:
如果B 依賴A,且AB都一個同名的資源,那麼B使用的是A的資源,
一定要改成不同的名字
子執行緒重新整理UI:
有時候在子執行緒重新整理了UI並不會崩潰,例如Adapter.notify,但是介面會顯示異常(例如需要劃一下介面才會顯示等),
1.需要檢查Adapter.notify
2.圖片載入
3.網路請求
個人Github:https://github.com/FortuneDream
歡迎Star