Я использую BroadCastReceiver, чтобы показать данные о батарее PowerSource, с помощью которой он предоставляет данные. Я использовал фрагмент, чтобы показать данные. Я могу получить данные и установить для них обязательное поле, но оно не обновляется при отключении PowerSource. Как можно решить эту проблему?
BatteryFragment
public class BatteryFragment extends Fragment{
FragmentBatteryBinding fragmentBatteryBinding;
BatteryFragmentVm batteryFragmentVm;
List<PojoMain> batteryData;
RecyclerAdapter recyclerDeviceAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
fragmentBatteryBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_battery, container, false);
batteryFragmentVm = new BatteryFragmentVm(getContext());
fragmentBatteryBinding.setBatteryVm(batteryFragmentVm);
retrieveBatteryData(getContext());
return fragmentBatteryBinding.getRoot();
}
//get Battery Power Source
public static String isPlugged(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
String powerSource = "";
if (plugged == BatteryManager.BATTERY_PLUGGED_AC) {
powerSource = "Plugged AC";
} else if (plugged == BatteryManager.BATTERY_PLUGGED_USB) {
powerSource = "Plugged USB";
} else if (plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS) {
powerSource = "PLugged Wireless";
} else if (plugged == BatteryManager.BATTERY_STATUS_DISCHARGING) {
powerSource = "Discharging";
} else {
powerSource = "status unknown";
}
return powerSource;
}
public void retrieveBatteryData(Context context) {
// batteryData.clear();
batteryData = new ArrayList<>();
batteryData.add(new PojoMain("Power Source", isPlugged(context)));
batteryFragmentVm.loadBatteryData(batteryData)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(pojoMains -> {
recyclerDeviceAdapter = new RecyclerAdapter(batteryData, getContext());
fragmentBatteryBinding.batteryRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
fragmentBatteryBinding.batteryRecyclerView.setAdapter(recyclerDeviceAdapter);
});
}
@Override
public void onResume() {
super.onResume();
}
}
BatteryFragmentVm
public class BatteryFragmentVm {
Context context;
public BatteryFragmentVm(Context context) {
this.context = context;
}
public Observable<List<PojoMain>> loadBatteryData(List<PojoMain> string) {
return Observable.just(string)
.subscribeOn(Schedulers.newThread());
}
}
Почему полученные данные не меняются при изменении мощности
источник? Как решить эту проблему?