在onResume

时间:2016-02-18 08:41:28

标签: android android-activity android-lifecycle

首先,我们知道在函数super.onStart()回调中调用onResume()时没有意义。但是了解android活动的生命周期。任何人都可以向我解释一下。 让我来介绍一下它。我创建了简单的活动,并尝试运行两个代码版本。在版本1中,我重写方法onResume()并且在此函数中不执行任何操作。

代码:

@Override
protected void onResume() {
    Log.i(TAG, "onResume");
}

当然,当我尝试运行它时,这段代码会在Android上崩溃。 但是,当我运行第二个版本时,稍作修改。

代码:

@Override
protected void onResume() {
    super.onStart();
    Log.i(TAG, "onResume");
}

但是现在,应用程序可以正确运行并显示我的简单活动。当我用super.onStart()super.onCreate(null)super.onRestart()super.onStop()替换super.onDestroy()时,应用仍然可以投放。

这是我的活动。

public class MainActivity extends Activity {
    private static String TAG = "LifeCycle " + MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onStart();
        Log.i(TAG, "onStart");
    }
}

那么,任何人都能解释为什么会发生这件事吗?为什么应用程序在我这样做时仍能正常工作?

2 个答案:

答案 0 :(得分:0)

逻辑上,它只是超级方法调用。如果你从onResume()调用onStart(),从技术上来说它是正确的,但它是随机调用,并且违反了Activity生命周期。

答案 1 :(得分:0)

创建活动时,您可以扩展父类活动。您可以通过长按鼠标滚轮按钮来查看父活动类。如果你可以看到,你实际上是从你的子类发送视图到 父类,它将启动你的活动,是的,我知道android将调用你的父类的onStart方法而不是你的sublcass。这对我们来说是一个明确的观点。如果你想知道活动生命周期是如何工作的,那很简单。首先当你启动你的应用程序onCreate方法被调用然后onStart被调用n然后当你的应用程序在前台时OnResume被调用然后一旦你的应用程序在后台onPause被调用,如果你按下后退按钮onDestroy将被调用。如果您想了解完整的生命周期,可以在devlopers.android.com上查看。谢谢。我希望这是有帮助的

相关问题