Android 广播接收机未刷新移动电池电源更换数据

Android 广播接收机未刷新移动电池电源更换数据,android,broadcastreceiver,Android,Broadcastreceiver,我正在使用BroadCastReceiver显示电池电源的数据,电池电源通过该电源提供数据。我已经使用片段来显示数据。我能够获取数据并将其设置为必填字段,但在断开电源连接时不会刷新。如何解决此问题 电池碎片 public class BatteryFragment extends Fragment{ FragmentBatteryBinding fragmentBatteryBinding; BatteryFragmentVm batteryFragmentVm; Li

我正在使用BroadCastReceiver显示电池电源的数据,电池电源通过该电源提供数据。我已经使用片段来显示数据。我能够获取数据并将其设置为必填字段,但在断开电源连接时不会刷新。如何解决此问题

电池碎片

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();
    }


}
公共类BatteryFragment扩展片段{
碎片电池绑定碎片电池绑定;
BatteryFragmentVm BatteryFragmentVm;
列出电池数据;
回收设备适配器回收设备适配器;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
super.onCreateView(充气机、容器、保存状态);
fragmentBatteryBinding=数据绑定直到充气(充气机,右布局,电池碎片,容器,假);
batteryFragmentVm=新的batteryFragmentVm(getContext());
fragmentBatteryBinding.setBatteryVm(batteryFragmentVm);
retrieveBatteryData(getContext());
返回fragmentBatteryBinding.getRoot();
}
//获取电池电源
公共静态字符串isPluged(上下文){
Intent Intent=context.registerReceiver(空,新的IntentFilter(Intent.ACTION\u BATTERY\u CHANGED));
int plucked=intent.getIntExtra(BatteryManager.EXTRA_plucked,-1);
字符串powerSource=“”;
如果(已插电==电池管理器.电池\u已插电\u交流){
powerSource=“插入式交流”;
}否则如果(已插入==电池管理器。电池\u已插入\u USB){
powerSource=“插入USB”;
}else if(已插入==电池管理器。电池\u已插入\u无线){
powerSource=“插入式无线”;
}否则如果(堵塞==电池管理器.电池\u状态\u放电){
powerSource=“放电”;
}否则{
powerSource=“状态未知”;
}
返回电源;
}
公共void retrieveBatteryData(上下文){
//batteryData.clear();
batteryData=新的ArrayList();
add(新的PojoMain(“电源”,isplug(上下文));
batteryFragmentVm.loadBatteryData(电池数据)
.observeOn(AndroidSchedulers.mainThread())
.订阅(POJOMANS->{
recyclerDeviceAdapter=新的RecyclerAdapter(batteryData,getContext());
fragmentBatteryBinding.BatteryRecyclView.setLayoutManager(新的LinearLayoutManager(getContext());
fragmentBatteryBinding.BatteryRecyclView.setAdapter(回收设备适配器);
});
}
@凌驾
恢复时公开作废(){
super.onResume();
}
}
电池碎片VM

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());
    }


}
公共类BatteryFragmentVm{
语境;
公共BatteryFragmentVm(上下文){
this.context=上下文;
}
公共可观察loadBatteryData(列表字符串){
返回可观察的。just(字符串)
.subscribeOn(Schedulers.newThread());
}
}
为什么接收到的数据不随电源的变化而变化 来源?如何解决这个问题


您如何注册
BroadcastReceiver
以获取电池更新?你在测试什么版本的Android?@davidwasser,我已经解决了,伙计。很高兴你解决了它。你应该回答你自己的问题,因为你的解决方案可能会帮助其他有类似问题的人,而且也会把这个问题从未回答的问题列表中去掉。@DavidWasser-ok-man。我会把答案贴出来。