BroadCast Receiver не обновляет данные об изменении источника питания мобильного аккумулятора - PullRequest
0 голосов
/ 16 мая 2018

Я использую 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());
    }


}

Почему полученные данные не меняются при изменении мощности источник? Как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...