getCurrentState() returns 仅 "INITIALIZED"
getCurrentState() returns only "INITIALIZED"
我对下面的代码片段有疑问。
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();
}
}
每当我调用 lifeCycleComponant.getState() 时,它只会 returns 初始化。
但是当我从 MainActivit.onPause() 方法调用它时,它给出了正确的答案。
lifeCycleComponant=new MainActivity();
将创建一个新的 Activity,它将处于初始化状态并且不会 link 到您的 Activity
,即 运行 在前台。
您不需要访问 Observer 中的当前状态,因为它会根据适当的 Lifecycle.Event
被触发
我对下面的代码片段有疑问。
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();
}
}
每当我调用 lifeCycleComponant.getState() 时,它只会 returns 初始化。 但是当我从 MainActivit.onPause() 方法调用它时,它给出了正确的答案。
lifeCycleComponant=new MainActivity();
将创建一个新的 Activity,它将处于初始化状态并且不会 link 到您的 Activity
,即 运行 在前台。
您不需要访问 Observer 中的当前状态,因为它会根据适当的 Lifecycle.Event