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

时间:2015-08-23 20:17:51

标签: android android-activity android-lifecycle

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

第一个是正常的 onCreate()方法第二个刚刚创建 with onStart()方法,但没有onCreate()方法,但仍能正常运行,没有任何错误。

我的疑问:如果没有使用Activity作为超类的onCreate()方法,应用程序可以如何启动。根据生命周期没有错吗? (但它仍在工作!)

第一个:

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();

    }
}

3 个答案:

答案 0 :(得分:1)

  

如果没有onCreate()...

,应用程序如何启动

不会被覆盖,而是会调用 super Activity的 onCreate()

  

根据生命周期,这没有错吗?

从OOP的角度来看,你没有做错任何事。但是,从Activity's生命周期的角度来看,不覆盖onCreate()方法并不是“你应该做的”。您应该根据互联网上的official documentation或众多帖子坚持生命周期方法,以便正确管理活动状态。

例如,在您的情况下,您正在从不正当的Activity's州拨打电话,除非您打算这样做。根据{{​​1}}生命周期,Activity's方法只调用一次, - 在 Activity 实例创建时,而onCreate()方法可能在其生命周期中被多次调用

答案 1 :(得分:0)

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

答案 2 :(得分:0)

不同之处在于onStart()将在每次触发onRestart()时触发,例如,当您将活动从可见性中取出而不是将其恢复为可见性时。

onCreate()只发生一次,活动创建,或杀死应用后重新创建。

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

中看到的那样