Android 应用程序->onCreate() 重新打开应用程序时未调用

问题描述 投票:0回答:3
public class MyApplication extends Application{

@Override
public void onCreate()
{
    super.onCreate();
    Log.d("*******:", "onCreate");
}}

public class MainActivity extends ActionBarActivity{

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

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

当这个应用程序第一次打开时,MyApplication 中的 onCreate() 方法已被调用,但是当我完成 Activity(按后退按钮),然后重新打开应用程序时,我发现 MyApplication 中的 onCreate() 方法没有被调用.

奇怪的是,如果我在系统后台“杀死”应用程序,然后重新打开它,我发现 onCreate() 方法可以再次被调用。

我不知道为什么,我想在用户重新打开我的应用程序时得到操作,有人可以帮忙吗?谢谢!

android oncreate
3个回答
5
投票

您的

MyApplication
正在延伸
Application
。因此,重新打开应用程序时不会调用
onCreate
是有道理的,因为应用程序位于内存中

如果正在延长

Activity
,重新打开时会调用
onCreate


3
投票

OnCreate仅用于初始创建,因此应该仅被调用一次。 onCreate() 方法执行基本的应用程序启动逻辑,该逻辑在 Activity 的整个生命周期中只应发生一次。

初始化过程需要大量资源,为了避免这种情况,一旦创建的活动永远不会完全销毁,但在后台对用户不可见,因此一旦将其带回前台,就不会发生重新初始化

onCreate()执行完成后,系统会快速连续调用onStart()和onResume()方法。

如果您希望多次完成任何处理,则应将其放在其他地方,例如在 @OnResume 方法中。

protected void onRestart() {
  Log.d("*******:", "onRestart");
    super.onRestart();

}

protected void onResume() {
    super.onResume();
  Log.d("*******:", "OnREsume");
}

希望您理解!!


0
投票

重写应用程序类的 OnCreate,如下所示:

     @OptIn(DelicateCoroutinesApi::class)
     override fun onCreate() {
        GlobalScope.launch {
          ProcessLifecycleOwner.get().lifecycle.withCreated {
            // Here onCreate will be called !
          }
        }
        super.onCreate()
      }
© www.soinside.com 2019 - 2024. All rights reserved.