Android Kotlin-2 Handler與UI刷新


Posted by John on 2020-12-05

刷新UI的方式很多種,以下是我最常使用的方法,如果UI刷新的時候,放錯執行緒,就會導致App閃退,一些小技巧,可以減少app閃退

  1. 先將Activity找尋到,就可以使用刷新UI的方式

     activity?.runOnUiThread { 
    
     }
    
  2. 使用Handle的方式去刷新UI,要確保Handle一定在Main Thread

     val mainHandler = Handler(Looper.getMainLooper())
     mainHandler.post {
    
     }
     //延遲刷新
     mainHandler.postDelayed({
     },2000)
    
  3. 使用Handle Event方式刷新UI,一樣要確保Handle在Main Thread

     inner class HandlerUI(mainLooper: Looper) : Handler(mainLooper) {
    
         override fun handleMessage(msg: Message) {
             when (msg.what) {
                 1 -> {
                     println("有事件進入,且在Main Thread")
                 }
             }
         }
     }
     //這一段就可以確保在Main Thread
     val handler = HandlerUI(Looper.getMainLooper())
     val message = handler.obtainMessage()
     message.what = 1
     handler.sendMessage(message)
    

就以上三種就是我最常使用的方法

注意事項:

a. 在使用Main Thread的時候,要特別小心,別讓Main Thread,因為處理資料太多,導致整個Main Thread堵塞,堵塞的時候,會發現整個手機畫面會卡一下

b. 將不是UI的資料,放置非Main Thread裡面去跑,然後可以在Main Thread跑個Progress Bar,等待資料處理完成


##Android #Kotlin #電腦程式 #軟體設計 #UI #UI刷新 #事件







Related Posts

實作NLog_專案Console

實作NLog_專案Console

菜鳥切版2

菜鳥切版2

[Day06] Applicative

[Day06] Applicative


Comments