作为一个实验我跑的下面的代码段(简化):冷冻日历 - 为什么?
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