Issue
I'm having doubt in following code snippets.
MainActivity.Java
public class MainActivity extends AppCompatActivity implements LifecycleOwner,LifeCycleComponant {
private static final String TAG =MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLifecycle().addObserver(new MyObserver());
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause: ");
getState();
}
@Override
public void getState() {
Log.d(TAG, "getState: "+getLifecycle().getCurrentState());
}
}
MyObserver.Java
public class MyObserver implements LifecycleObserver {
private static String TAG=MainActivity.class.getSimpleName();
private LifeCycleComponant lifeCycleComponant;
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void myOnCreate(){
Log.d(TAG, "myOncreate: ");
lifeCycleComponant=new MainActivity();
lifeCycleComponant.getState();
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void myOnDestroy(){
Log.d(TAG, "myOnDestroy: ");
lifeCycleComponant.getState();
lifeCycleComponant=null;
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void myOnResume(){
Log.d(TAG, "myOnResume: ");
lifeCycleComponant.getState();
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void myOnPause(){
Log.d(TAG, "myOnPause: ");
lifeCycleComponant.getState();
}
}
Whenever I'm calling lifeCycleComponant.getState() it only returns INITIALIZED. But when I'm calling it from MainActivit.onPause() method it gives the correct answer.
Solution
lifeCycleComponant=new MainActivity();
will create a new Activity which will be in initialized state and won't have link to your Activity
which is running in foreground.
You don't need to access current state in the Observer since it will be triggered based on appropriate Lifecycle.Event
Answered By - Sagar
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.