在同一個 Activity 中,如何將 Handler 內的數值傳遞給 initViews() 方法?
最直接、符合封裝原則的方式是 為目標方法新增參數,調用時傳入具體值。
public class MainActivity extends AppCompatActivity {
private Handler viewHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
int value = msg.what; // 假設從訊息取得
initViews(value); // 直接傳遞
}
};
// 修改方法簽名,接收參數
public void initViews(int value) {
// 使用 value 進行初始化邏輯
textView.setText("Value: " + value);
}
// 若需在多處調用,保留無參數版本或設預設值
public void initViews() {
initViews(0);
}
}
private int pendingValue;,initViews() 讀取該欄位。適用於「異步產生、稍後統一初始化」場景。data class 或 POJO)。static Map 做全域暫存,易造成記憶體洩漏與並發問題。