作爲一個實驗我跑的下面的代碼段(簡化):冷凍日曆 - 爲什麼?
public class SGamePlay extends Activity implements View.OnClickListener
{
Calendar GlobalCal = null;
public void onCreate(Bundle savedInstanceState)
{
GlobalCal = Calendar.getInstance();
}
long time_in_ms()
{
long ans = -1;
long ans2 = -1;
Calendar LocalCal = Calendar.getInstance();
ans = LocalCal.getTimeInMillis();
ans2 = GlobalCal.getTimeInMillis();
Log.e("game","ans="+ans+" ans2="+ans2);
return ans;
}
// much more code here...
}
的time_in_ms()函數是從一個子線程調用。問題是,雖然ans似乎是一個正確的,不斷更新的值,ans2似乎凍結在它的初始值。這怎麼可能?
編輯:我需要解決這個問題,因爲我想減少我的程序中垃圾收集的需要。
如果您旋轉設備,從而破壞您的活動並重新創建它,您將再次執行onCreate並更新您的日曆。選中此項,您將會明白,您不會更新GlobalCal,因爲您無法再通過onCreate方法。 – Snicolas 2012-02-25 13:06:28