【发布时间】:2014-02-01 01:36:07
【问题描述】:
第二次运行应用程序时,应用程序类的 onCreate 不会被调用。这是第一次。这可以通过使用 Android Studio 创建一个新应用程序,然后添加一个最小的单例应用程序类来重现:
package com.whatever.test;
import android.app.Application;
import android.content.Context;
import android.util.Log;
public class MyApp extends Application {
private static MyApp singleton;
public static MyApp getInstance(Context context) {
Log.i("MyApp","---------->getinstance");
return singleton;
}
@Override
public void onCreate()
{
super.onCreate();
singleton = this;
Log.i("MyApp","---------->act oncreate");
}
}
在活动中添加,在onCreate中:
MyApp myApp = MyApp.getInstance(this);
Log.i("MainActivity", "-------->onCreate");
在 onDestroy 中:
@Override
public void onDestroy()
{
super.onDestroy();
Log.i("MainActivity", "-->onDestroy");
}
Manifest.xml 包含:
android:name=".MyApp"
我在活动上按下后退按钮并看到 onDestroy 被调用,但这显然不足以删除 Application 类。如果我使用手机的应用程序管理器终止该应用程序并重新运行,我将再次看到 App onCreate 日志(但仅运行一次)。
当最后一个活动被移除时,这个类不应该被销毁吗?这是我的假设。当然,我读过有人说此类可以在应用程序运行时被销毁,因此您必须在应用程序生命周期中处理重新加载任何状态,但没有任何反映我的情况。
注意:在实体手机 (Galaxy S3) 上测试
【问题讨论】: