android java開發 第四天 之(後臺服務處理完業務數據後,傳送給ui Activity並刷新界面)


1、之前我們實現了activity 和services綁定,我們可以在activity通過service對象執行service各種函數。

2、當然也可以將activity.this傳給services中保存起來。待service處理業務數據如(網絡讀寫後)數據發送給activity。

3、重點:service保存了activity.this,當然可以調用activity函數,但是ui相關的函數是不可以調用的,android不允許在其他線程中(也包括其他activity)中直接執行其他activity的ui更新操作。否則會出現運行時異常:E/AndroidRuntime(14701): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.


     所以:我們只能界面Activity定義Handler對象,實現消息接受接口,綁定服務後,把Handler對象set給services保存起來。待service業務數據處理完畢,並把數據傳遞給activity後,service執行Handler對象,handlerObj.sendMessage(msg) 發送消息給Activity。Activity收到消息後,調用更新ui方法即可。

發佈了74 篇原創文章 · 獲贊 9 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章