我正在为一些特定地点开发一种停车计时器计数器应用程序。该应用程序询问用户他在哪里(下拉菜单,保存列字母和数字,如A6)然后显示一个具有给定位置的屏幕,一个从0开始计数的计时器(计时器类)和必须支付的价格退出(使用经过时数计算*基本价格)。
这一切都很好用,直到用户或操作系统杀死应用程序(任务管理器或内存管理)。然后,下次用户打开应用程序时,他回到主菜单,他的位置,时间和价格都已丢失。
我需要一种方法来保存所有用户的信息,并能够在应用重启时加载它。
最初我曾想过将用户的位置和计时器开始的确切时间(DateTime.Now()可能?)保存到内部存储器中的.txt文件中,以便它可以读取:
mallname,columnLetter,columnNumber,startTime
这样,如果应用程序被终止,或者应用程序从头开始启动,MainActivity将首先检查应用程序内部存储中是否存在file.txt,如果有,则立即启动lastPage活动,读取.txt文件以将值作为参数传递(因此,逗号分隔)。如果没有这样的文件,它将正常进行。最后一页确实包含一个重置按钮,可以删除该文件,以便应用程序可以在下次使用时正常启动。
我不知道这种方法有多高效,但这是我想到的第一件事。但是,我不知道该怎么做。我在C#for Windows Phone中编写了这个相同的方法,但我不知道如何将其转换为Java for Android。另外,在C#中,我实际上并没有使用计时器,而是保存了startTime并使用了计时器来计算每个刻度(每秒)的startTime - DateTime.now()并更新textBlock以显示它。 / p>
非常感谢任何帮助。
答案 0 :(得分:1)
通常用户数据应该保存到SQLite数据库中,但是在您的情况下,由于您正在谈论一些变量,因此您可以更轻松地将这些值保存到应用程序中&#39 ; s SharedPreferences
。
对于您要保存的每个值,请将此行添加到Chronometer的onChronometerTick()方法中:
PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("your_key", <Your_value>).commit();
稍后(例如,当您的应用程序从崩溃中恢复时)可以通过以下方式检索:
PreferenceManager.getDefaultSharedPreferences(this).getInt("your_key", <Default_value>);
关于性能问题,如果您的计时器每秒钟滴答一次,这应该对您的应用程序的性能没有影响,并且完全可以接受。