【问题标题】:How do I save chronometer elapsed time in android app如何在android应用程序中保存计时器经过的时间
【发布时间】:2014-08-17 19:30:34
【问题描述】:

我正在为一些特定地点开发一种停车计时器计数器应用程序。该应用程序询问用户他在哪里(下拉菜单,保存列字母和数字,如 A6),然后显示一个带有给定位置的屏幕,一个从 0 开始计数的计时器(计时器类)以及必须支付的价格退出(使用经过时间 * 基准价格计算)。

这一切都很好,直到用户或操作系统终止应用程序(任务管理器或内存管理)。然后,当用户下次打开应用程序时,他又回到了主菜单,他的位置、时间和价格都丢失了。

我需要一种方法来保存所有用户信息并能够在应用重启时加载它。

最初我想将用户的位置和计时器开始的确切时间(可能是 DateTime.Now()

 mallname,columnLetter,columnNumber,startTime

这样,如果应用被杀死,或者应用从头开始启动时,MainActivity 将首先检查应用内部存储中是否存在 file.txt,如果存在,则立即启动 lastPage 活动,读取 .txt 文件以将值作为参数传递(因此,逗号分隔)。如果没有这样的文件,它会正常进行。最后一页确实包含一个重置按钮,该按钮将删除文件,以便应用在下次使用时可以正常启动。

我不知道这种方法的效率如何,但这是首先想到的。但是,我不知道该怎么做。我在 C# 中为 Windows Phone 编写了相同的完全相同的方法,但我不知道如何将它转换为 Android 的 Java。此外,在 C# 中,我实际上并没有使用计时器,而是保存了 startTime 并使用了一个计时器,该计时器将计算 startTime - DateTime.now() 每次滴答(每秒)并更新 textBlock 以显示这一点。

任何帮助将不胜感激。

【问题讨论】:

    标签: java android file timer chronometer


    【解决方案1】:

    通常用户数据应保存到 SQLite 数据库,但在您的情况下,由于您谈论的是一些变量,因此将这些值保存在应用程序的 SharedPreferences 中会容易得多。

    对于您要保存的每个值,将此行添加到 Chronometer 的 onChronometerTick() 方法:

    PreferenceManager.getDefaultSharedPreferences(this).edit().putInt("your_key", <Your_value>).commit();
    

    这可以稍后(例如,当您的应用程序从崩溃中恢复时)通过以下方式检索:

    PreferenceManager.getDefaultSharedPreferences(this).getInt("your_key", <Default_value>);
    

    关于性能问题,如果您的 Chronometer 每秒滴答一次,这应该不会影响您应用的性能并且完全可以接受。

    【讨论】:

    • 是的,我不认为我必须保存每一秒,如果我保存计时器实际启动的时间,就足够了
    • 随心所欲地使用它。另外,非常欢迎您在edit() 之后链接命令,例如:.edit().putInt("elapsed_time",10).putString("username","Bob").commit()
    • 啊,这看起来很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多