close
之前 371 - 加法練習程式 01 想了幾個改進的點子,覺得限時遊戲會是比較簡單的一項,因為以為 timer 拿來用一下就可以達成這個效果,結果事情果然沒有憨人想像的簡單:
Android 不准許在 UI 的 thread 上作花時間的動作,因為這樣 UI 會被卡住無法回應。
這其實對我來講很難,雖然 thread 好像常常在聽,可是其實我根本沒作過類似的東西,很多觀念其實都不是很清楚,還好找到這篇,才比較了解怎麼回事。所以簡單來講,APP 起來後,就是一個 thread 在處理 UI 方面的東西,有人叫他 UI thread 也有人叫他 main thread,那如果有個按鈕按下去,去作一個耗時幾秒的運算動作,那這個 thread 就會變成在處理那個運算,無法回應使用者的操作,所以這裡的作法就是開啟另一個 thread,然後把運算動作交給新 thread 去作,等運算完了,再把結果通知 UI thread,看要顯示在畫面還是怎樣。
然後 thread 就是幫忙作事的人,可以直接把要作的事交給他,或是放在 runnable 物件交給他, 至於 thread 之間的溝通,用的就是 Message 物件。對了,還有個 Handler 說是 thread 的經紀人。
註記:
- 雖然看到的文件都是直接 new Handler(),但我發現要 new android.os.Handler() 才行,似乎是在 utility 還是什麼,也有 Handler 的類別,沒指定會被以為是那個。
- activity 裡抓 resource 字串的方式:getResources().getString(R.string.xxxx)
- 程式結束時要解除工人的工作 handler.removeCallbacks(runnable) 還要叫工人回去休息 thread.quid(),不然 thread 會一直存在。
全站熱搜