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

时间:2015-07-02 10:25:16

标签: android oncreate

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()方法已被调用,但当我完成活动(按后退按钮),然后重新打开应用程序时,我发现MyApplication中的onCreate()方法NOT被叫了。

如果我&#34;杀死&#34;这很奇怪。系统背景中的应用程序,然后重新打开它,我发现可以再次调用onCreate()方法。

我不知道为什么,我想在用户重新打开我的应用程序时采取行动,有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:5)

您的MyApplication正在延长Application。因此,当应用程序在内存中重新打开应用程序时,onCreate未被调用是有意义的

如果展开Activity,重新开启时会调用onCreate

答案 1 :(得分:3)

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

初始化过程需要大量资源并且为了避免这种情况,一旦创建的活动永远不会被完全销毁,但在后台仍然不可见,这样一旦它被带回到前面,就不会重新初始化

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

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

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

}

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

希望你明白!!