0%

使用liveData实现全局数据自动刷新页面

🧱 第一步:创建一个公共数据类(单例)

public class GlobalData extends ViewModel {
private static GlobalData instance;

private final MutableLiveData<String> flightStatus = new MutableLiveData<>();
private final MutableLiveData<Boolean> isConnected = new MutableLiveData<>();

public static GlobalData getInstance() {
    if (instance == null) {
        instance = new GlobalData();
    }
    return instance;
}

public MutableLiveData<String> getFlightStatus() {
    return flightStatus;
}

public MutableLiveData<Boolean> getIsConnected() {
    return isConnected;
}

}
🧱 第二步:页面中监听数据变化(Activity 或 Fragment)
在你的 Activity 中:

GlobalData globalData = GlobalData.getInstance();

globalData.getFlightStatus().observe(this, status -> {
flightStatusTextView.setText(status);
});

globalData.getIsConnected().observe(this, isConnected -> {
connectIcon.setVisibility(isConnected ? View.VISIBLE : View.GONE);
});
✅ 第三步:在任何地方修改数据,全局生效

GlobalData.getInstance().getFlightStatus().postValue(“起飞中”);
GlobalData.getInstance().getIsConnected().postValue(true);

🔄 如果希望多个 Activity 共享 ViewModel 数据?
建议用 ViewModelProvider 配合 Application:

public class MyApp extends Application {
private GlobalData globalData = new GlobalData();

public GlobalData getGlobalData() {
    return globalData;
}

}
然后在任意页面中用:

GlobalData globalData = ((MyApp) getApplication()).getGlobalData();