概述
最近项目上要实现一个功能就是统计听歌时长,众所周知听歌时长统计的难点主要在于应用场景过于复杂,暂停,播放,快进快退,缓存,停止等各个状态之间的切换,所以有必要写一个稳定,功能强大的时间统计工具,最后想到的办法是使用java的Timer和TimerTask。
在使用TimerTask的时候特别要注意一个Excepion就是TimerTask is schedule already,我的处理方式是try catch,这样有一个好处就是之前统计的时长得以保留,真正需要计时器归零的时候直接调用set方法。下面看详细代码:
import java.util.Timer; import java.util.TimerTask; import cmccwm.mobilemusic.http.HttpLog; /** * Created by king on 16/6/30. * 听歌时长统计工具 */ public class MusicPlayTimeCountTool { private static MusicPlayTimeCountTool mInstance = new MusicPlayTimeCountTool(); private int time; private Timer timer; private TimerTask timerTask; private MusicPlayTimeCountTool() { if (timer == null) { timer = new Timer(); } if (timerTask == null) { timerTask = new TimerTask() { @Override public void run() { HttpLog.e("huihui", "Construct " + time); time++; } }; } } public static MusicPlayTimeCountTool getInstance() { if (mInstance == null) { mInstance = new MusicPlayTimeCountTool(); } return mInstance; } /** * 开始计时,可以重复调用,之前的时间不会被清零 * 登录不成功不会统计 */ public void startCount() { if (timer == null) { timer = new Timer(); } if (timerTask == null) { timerTask = new TimerTask() { @Override public void run() { HttpLog.e("huihui", "StartCount " + time); time++; } }; } try { timer.schedule(timerTask, 100, 1000); } catch (Exception e) { HttpLog.e("huihui", "MusicPlayTimeCountTool startCount Exception " + e.getMessage()); } } /** * 计时停止并返回当前总时间 */ public int stopCount() { try { if (timer != null) { timer.cancel(); timer.purge(); timer = null; } if (timerTask != null) { timerTask.cancel(); timerTask = null; } } catch (Exception e) { HttpLog.e("huihui", "MusicPlayTimeCountTool stopCount Exception " + e.getMessage()); } return time; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } }
最后
以上就是帅气帽子为你收集整理的Android 时间统计工具,的全部内容,希望文章能够帮你解决Android 时间统计工具,所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复