首页 > 解决方案 > 广播接收机未刷新移动电池电源更换数据

问题描述

我正在使用 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());
    }


}

为什么更换电源后接收到的数据没有变化?如何解决这个问题?

标签: androidbroadcastreceiver

解决方案


推荐阅读