iVi*_*ikD 5 java android timer chronometer
我想实现一个时间计数器(从0开始计数),基本上得到保存时间变量(开始时间,这是因为一旦用户点击一个按钮,创建)和减去当前时间(Calendar.getInstance()可能?这样结果就是两次之间的差异(HH:MM:SS).这个方法将在计时器的每个刻度上运行,以便文本视图每秒更新一次,有效地创建我的计时器.
现在,我采用这条迂回路线,因为这是我能够找到的唯一方法,即使应用程序被杀,也可以节省时间.这是因为startTime变量在创建后立即保存到SharedPreferences,并且在每个Tick中,系统只需找到startTime和当前时间之间的差异即可在现场计算我的计时器.
现在,我已经尝试将我的startTime作为Calendar变量并初始化为:
Calendar startTime = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
然后
elapsedTime = startTime - Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
但显然,这不起作用.
在一个用C#编写的类似项目中,我能够使用它,虽然使用了DateTime变量......在Android中有这样的方法吗?
如果这太复杂了,是否有更好的方法来保存我的天文台计步器进度?
谢谢,麻烦您了!
ian*_*ake 16
SharedPreference如果您只有一个开始时间,则使用a 存储开始时间是完全正确的,尽管您可能希望存储Calendar.getInstance().getTimeInMillis()而不是对象本身.然后,您可以使用恢复它
long startMillis = mSharedPreferences.getLong(START_TIME_KEY, 0L);
Calendar startTime = Calendar.getInstance();
startTime.setTimeInMillis(millis);
Run Code Online (Sandbox Code Playgroud)
计算差异通常比毫秒更容易:
long now = System.currentTimeMillis();
long difference = now - startMillis;
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用DateUtils.formatElapsedTime()输出它:
long differenceInSeconds = difference / DateUtils.SECOND_IN_MILLIS;
// formatted will be HH:MM:SS or MM:SS
String formatted = DateUtils.formatElapsedTime(differenceInSeconds);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5836 次 |
| 最近记录: |