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

被触发