为什么我的应用程序不会保存2个值,然后在下次应用程序打开时显示它们?

时间:2014-10-08 18:42:12

标签: java android sharedpreferences

我最近了解了SharedPreferences,现在我试着把它放在我的代码中。我有2个整数值,称为counter和counterPS。我想要发生的是,该应用程序将每5秒保存一次值,然后当应用程序完全关闭并完全重新打开(手机关闭然后再打开)时,我希望应用程序查看是否保存了值(如果它们甚至是)大于0,如果是,则将当前值设置为旧保存的值。但是我为应用程序内部的值设置了一个数字并等待了五秒钟才能保存,当我完全重新启动应用程序时,值只是为0。为什么这样,有人可以告诉我如何解决这个问题?

  protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);

    SharedPreferences saving = getSharedPreferences("ShipData", Context.MODE_PRIVATE);
    final SharedPreferences.Editor editor = saving.edit();

    int counter = saving.getInt("shipCounter", 0);
    int counterPS = saving.getInt("shipCounterPS", 0);

    if(mShip.getCounter() == 0) {
        if (counter > 0) {
            mShip.setCounter(counter);
            mShip.setCounterPerSec(counterPS);
        }
    }


    //Save values every 5 seconds Below
    new TimerClass(5000, 1000)
    {
        public void OnFinish()
        {
            editor.putInt("ShipCounter", mShip.getCounter());
            editor.putInt("ShipCounterPS", mShip.getCounterPerSec());
            editor.commit();
            this.start();
        }
    }.start();
}

1 个答案:

答案 0 :(得分:0)

如何使用处理程序(android方式)而不是计时器类?它适合你的情况吗?

欲了解更多信息:

http://www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/

我知道这个问题已经发布了一段时间。只是回复它以获得类似的未来问题......谢谢。