I used FireBase could messaging in my application and I want when the user receive message the activity fragment change. I did the following code for that but i don\'t know why
You should broadcast any firebase message updates and register broadcast receiver that handles that updates(where you should do fragment transactions) in your activity. If your activity is in the foreground that means luckily your receiver is registered. If you want to add the fragment in firebase service context, you can implement your own android.app.Application.ActivityLifecycleCallbacks interface, like
public class ActivityLifeCycleHandler implements Application.ActivityLifecycleCallbacks {
Activity currentActivity;
@Override
public void onActivityResumed(Activity foregroundActivity) {
this.currentActivity = foregroundActivity;
}
}
And get your activity's reference from ActivityLifeCycleHandler class of yours.(be careful not to leak the activity) . I wouldn't recommend this solution thought.
This callback is registered for your application instance and its callbacks(onResume()) are triggered by Activity life-cycle methods(super.onResume()) for every activity in your application.
you can't get a reference to getFragmentManager()
in the service class
How erver you can use a broadcast to listne the calls, anywhere else in the application.
getFragmentManager()
is a method of Activity
, therefore it can't work in a Service
.