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的方法即可。