How to observe live data inside broadcast receiver

Viewed 1177

My app should do an stuff every morning. So I am using broadcast receiver. When broadcast receiver is triggered I need to connect to my room-db. Get some data and do stuff with them. Normally I am using AndroidViewModel and LiveData for that. But I can not initiate a AndroidViewModel inside BroadcastReceiver. Instead I am initiating my repository and sending a read reaquest and assigning them to LiveData.

Problem is I need to observe the live data. But Broadcast receiver is not an lifecycle-owner.

private void getData(){
    HomeRepository repository = HomeRepository.getInstance(context);
    alarms = repository.getAllAlarms();
    alarms.observe(this, new Observer<List<Alarm>>() {
        @Override
        public void onChanged(List<Alarm> alarmList) {
            //Do Stuff
        }
    });
}

So it gives me a compile error saying Broadcast Reciever is not a lifecyle owner

So I tried this:

public class MyBroadcastReceiver extends BroadcastReceiver implements LifecycleOwner 

It compiled but gave an error on the run time

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.lifecycle.Lifecycle$State androidx.lifecycle.Lifecycle.getCurrentState()' on a null object reference

Can someone please show me the right direction to go here?

0 Answers
Related