android - 广播接收机未刷新移动电池电源更换数据
问题描述
我正在使用 BroadCastReceiver 来显示它提供数据的电池电源的数据。我使用 Fragment 来显示数据。我能够获取数据并将其设置为必填字段,但在断开电源时它不刷新。如何解决此问题?
电池碎片
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());
}
}
为什么更换电源后接收到的数据没有变化?如何解决这个问题?
解决方案
推荐阅读
- javascript - 如何从 Ant Design 中的菜单项悬停中删除突出显示?
- sql - 如何在 sql 中使用 max() 查找前 5 个值
- laravel - 如何像 5.3 一样更改 laravel 5.2 的错误视图?
- glassfish - Payara 部署组未启动
- c++ - 重置升压累加器 C++
- security - 网址 URL 与实际网站不同
- arrays - 在单元格或单元格区域中将函数作为数组添加
- android - 谷歌地图集成后我的应用程序无法打开
- callback - Javascript中Callback的严格定义
- terraform - 如何在 terraform 中运行 powershell 脚本?