0
我在活動onCreate方法中創建一個處理程序,並啓動後臺線程。在後臺線程中,我將調用處理程序的sendMessage方法(在處理程序的handleMessage方法中,我更新活動的UI),但活動可能不可見,會發生什麼?如果將消息發送給其活動已被取消的處理程序,會發生什麼情況?
我在活動onCreate方法中創建一個處理程序,並啓動後臺線程。在後臺線程中,我將調用處理程序的sendMessage方法(在處理程序的handleMessage方法中,我更新活動的UI),但活動可能不可見,會發生什麼?如果將消息發送給其活動已被取消的處理程序,會發生什麼情況?
如果您在該處理程序中沒有執行與UI相關的任何操作,則它將執行正常。請記住,保持對不活動活動的引用可能會造成內存泄漏 - 您將阻止虛擬機收集未使用的資源。
如果在該處理程序中執行了任何與UI相關的操作,將會發生什麼?異常會拋出? – 2011-03-26 15:02:48
是的,WindowManager.BadTokenException – ognian 2011-03-26 16:34:30
AFAIK,它不會拋出任何異常。但是,當您恢復應用程序時,它將執行所有與UI相關的聲明。這會在恢復時增加一些延遲,並且在執行這些語句時會看到黑屏。 – Karan 2011-03-26 17:19:09