2012-12-31 196 views
0

我已經在一個活動內部創建了一個處理程序(可以說「FirstActivity」)並將此處理程序傳遞給線程。現在我想通過從線程調用handler.obtainMessage(100).sendToTarget()來更新handleMessage()中的ui。線程需要20到30秒的時間才能將消息傳遞給UI。處理程序和線程UI更新

現在我的問題是: 我切換到另一個活動(比方說,「SecondActivity」)的「FirstActivity」的callback(handleMessage())之前然後調用:

1。是「FirstActivity」已經可用於垃圾回收?
2.如果我們完成「FirstActivity」並轉到「SecondActivity」,那麼「FirstActivity」上的視圖可用或變爲空?如果不成爲null,那麼爲什麼因爲「FirstActivity」在這個時間點完成了,並且如果我們想更新視圖,那麼它應該拋出NullPointerException。

回答

0
runOnUiThread(new Runnable() { 
     @Override 
      public void run() { 
       //Your code for UI update goes here. 
      } 
    }); 

它的simple.above代碼可以讓你從處理程序更新你的UI。

0

如果我們完成第一個活動,它將不再可用。
如果您想要再次更新第一個活動,您應該將意圖傳遞給第一個活動。 然後你應該更新..那時你不會得到空指針異常。 您應該爲此通過活動生命週期。