使用 onStart() 方法启动 Android 应用程序,而不是 onCreate()

Starting Android app with onStart() method, not onCreate()

我是 android 的新手,我正在学习 android 通过创建各种基本应用程序来澄清我的理解。我经历了 android 生命周期,所以我尝试编写以下代码。

第一个使用onCreate()方法是正常的,第二个刚刚创建使用 onStart() 方法,但 不使用 onCreate() 方法,但仍然两者都能正常工作,没有任何错误。

我的疑问:应用程序如何在没有 onCreate() 方法的情况下以 Activity 作为超类启动。按照生命周期不就错了吗? (但它仍然有效!)

第一个:

import android.content.Intent;
import android.net.Uri;
import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:+91**********"));
        startActivity(intent);
        finish();
    }
}

二一:

import android.content.Intent;
import android.net.Uri;
import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onStart() {
        super.onStart();
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:+91**********"));
        startActivity(intent);
        finish();

    }
}

如果您删除 OnCreate 并不意味着不会调用此方法 - 您只是没有覆盖它。

不同之处在于 onStart() 将在每次 应用程序触发 onRestart() 时触发 ,例如,当您将 activity 移出可见范围时而不是把它带回可见性。

onCreate() 只发生一次,当 activity 被 创建时 ,或者当你 杀死 然后重新创建它。

并且 onStart() 发生在 onCreate() 之后,如您在 this lifeCycle

中所见

How application can start without onCreate()...

在不被覆盖的情况下,将调用 super Activity's onCreate()

Is it not wrong according to life cycle?

从OOP的角度来看,你没有做错。但是,从 Activity's 生命周期的角度来看,不覆盖 onCreate() 方法并不是 "you're expected to do"。您应该按照 official documentation 或 Internet 上的许多帖子坚持使用生命周期方法,以便正确管理 Activity 的状态。

例如,在您的情况下,您正在从不正确的 Activity's 状态进行调用,除非您有意这样做。根据 Activity's 生命周期,onCreate() 方法只被调用一次,- 在 Activity 实例创建时,而 onStart() 方法可能在其生命周期中被多次调用。