我正在嘗試將事件從一個Java類發送到Activity。如何將事件發送到其他課程的活動?
場景是,本地會有一些數據,本機會調用java代碼中的回調函數,這個類處理數據,處理後我需要更新UI。我想在活動處理程序中的一個地方更新UI。 (不想在任何地方使用runOnUiThread())。
我無法使用以下方法正確發送事件。
第一種方法:
1)定義將消息發佈到隊列中並調用這些函數的函數。 2)爲了調用上述函數(第1點),我們需要上下文,如果我維護用於維護上下文並返回它的靜態變量,如果活動創建兩次,我們將無法獲得第一個活動的寫入上下文。
public class Activity1 {
protected static Context myContext = null;
protected Handler myHandler = null;
@override
public void onCreate() {
myContext = this;
myHandler = new Handler();
}
public static Context getMyContext() {
return myContext;
}
public void postEvent1() {
myHandler.sendMessage();
}
}
第二個方法:
1)使處理器作爲一個靜態變量和靜態函數的幫助返回這一點。 - 暴露內部變量不是一個好的設計。
2)當第二個活動創建時,缺點就像上面那樣。
public class Activity1 {
protected static Handler myHandler = null;
@override
public void onCreate() {
myHandler = new Handler();
}
public static Context getMyHandler() {
return myHandler;
}
}
是否可以在不使用靜態變量和靜態函數的情況下獲取活動上下文?
如果有人知道,請分享知識。 :)
感謝&問候,
SSuman185
糾正我如果我錯了。是不是你的活動必須擴展「活動」類? – 2011-11-21 12:42:09
爲什麼不能將Context和Handler對象從活動傳遞到類中,例如在構造函數中? – Maep
@莫漢 - 是活動需要延長。 – Suman