Android类初始化没有完成

时间:2014-04-23 01:18:30

标签: java android initialization ondestroy

在这个问题上挣扎了一个合适的头衔。我遇到过奇怪/莫名其妙的情况,因为我有时会初始化字段。

在这种情况下,我有一个布尔值,我初始化为假(我知道,冗余......但是......)

应用运行良好,在退出之前我的布尔值设置为true。我看日志猫看到onDestroy()已被调用。

然后我重新启动应用程序。

我的布尔值,我现在登录onCreate()的值是真的。

WTF?

我注意到活动是以新的PID开始的。然而,它绕过了字段初始化。请注意,我有一些不是多余的。那么这里发生了什么?

然后我强制停止设备上的设置菜单中的应用程序。现在重新启动应用程序会按预期显示所有内容,boolean = false。

onDestroy()是不是可靠/真正的终止?我不记得曾经读过这样的东西。

这不是我的应用程序,而是一个例子:

public class MyActivity extends Activity {
/**
 * Called when the activity is first created.
 */
private static boolean b = false;
private static int i = 1;
private static final String TAG = "junk app";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Log.i(TAG, "==================================================================");
    if(b) Log.i(TAG,"boolean is true");
    if(!b) Log.i(TAG,"boolean is false");
    Log.i(TAG,"The value of i is"+i);
    i++;
    b=!b;

    foo();
}
public void foo() {
    finish();
}

@Override
public void onResume() {
    Log.i(TAG,"onResume");
    super.onResume();
}

@Override
public void onStop() {
    Log.i(TAG,"onStop");
    super.onStop();
}
@Override
public void onDestroy() {
    Log.i(TAG,"onDestroy");
    super.onDestroy();
}

}

在设备上运行此应用并观察您的logcat。 onDestroy()被调用。现在从它的图标再次启动应用程序。我增加了,b变成了!b。

IDK,但我(天真)的期望是如果一个应用程序被销毁,如果它重新启动它会重新开始,所有初始化等都会再次完成。

1 个答案:

答案 0 :(得分:0)

  

静力学是静态的 - 它们是整个过程的全局。所以他们的价值   将持续整个过程的生命周期,这通常很多   比单个活动实例更长。

来源:https://groups.google.com/forum/#!topic/android-developers/PZXbCXliRbo