使用 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()
方法可能在其生命周期中被多次调用。
我是 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()
方法可能在其生命周期中被多次调用。