直播电商源码,活动开始时间计时器
直播电商源码,活动开始时间计时器实现的相关代码
1 | private void stopTime() {<br> LogUtils.e( "stopTime" );<br> if (timer != null ) {<br> timer.cancel();<br> timer = null ;<br> }<br> if (task != null ) {<br> task.cancel();<br> task = null ;<br> }<br> }<br> <br> <br> Timer timer;<br> TimerTask task;<br> <br> private void startTime(String time) {<br> LogUtils.e( "startTime" );<br> if (timer == null ) {<br> timer = new Timer();<br> }<br> if (task == null ) {<br> task = new TimerTask() {<br> @Override <br> public void run() {<br> startActivity( new Intent(RestService. this , RestHintActivity. class ).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));<br> }<br> };<br> }<br> <br> time = time.replace( "分钟" , "" );<br> // long period = Integer.parseInt(time) * 60;<br> long period = 10000;<br> timer.schedule(task, period);<br> }<br> <br> <br> <br> <br>timer回收<br> timerTask.cancel();<br> timer.purge();将timer中的task为cancel的状态进行回收;<br> timerTask = null;<br>demo:<br> <br>private void initTimer() {<br> <br> if (timer == null) {<br> timer = new Timer();<br> }<br> if (timerTask == null) {<br> timerTask = new TimerTask() {<br> @Override<br> public void run() {<br> timeIsRun = true;<br> if (video_duration > 999) {<br> return;<br> }<br> if (mediaPlayer != null) {<br> try {<br> video_position = mediaPlayer.getCurrentPosition() / 1000;<br> <br> } catch (IllegalStateException e) {<br> Log.e(TAG, "timer中 media获取错误: ");<br> }<br> }<br> Log.e(TAG, "run video_position: "+video_position );<br> Log.e(TAG, "run video_duration: "+video_duration );<br> String current = BigDecimalUtils.div((video_duration - video_position) + "", video_duration + "", 5);<br> <br> if (BigDecimalUtils.compare(current, video_first) && !video_is_first) {<br>// 第一次超过1/4时,上报1/4视频进度;<br> Log.e(TAG, "上报 play_first: ");<br> commitAdEvent(adInfoUtils.getList_video_play_first());<br> video_is_first = true;<br> }<br> if (BigDecimalUtils.compare(current, video_midpoint) && !video_is_midpoint) {<br>// 第一次超过2/4时,上报2/4视频进度;<br> Log.e(TAG, "上报 video_play_midpoint: ");<br> commitAdEvent(adInfoUtils.getList_video_play_midpoint());<br> video_is_midpoint = true;<br> }<br> if (BigDecimalUtils.compare(current, video_third) && !video_ist_third) {<br>// 第一次超过3/4时,上报3/4视频进度;<br> Log.e(TAG, "上报 video_play_third: ");<br> commitAdEvent(adInfoUtils.getList_video_play_third());<br> video_ist_third = true;<br> }<br> <br> handler.sendEmptyMessage(updataTimeType);<br> <br> if (!videoDialog.isShowing()||video_position == video_duration) {<br> timeIsRun = false;<br> timerTask.cancel();<br> timer.purge();<br> timerTask = null;<br> return;<br> }<br> <br> Log.e("TAG", "run video_position: " + video_position);<br> }<br> };<br> }<br> if (timeIsRun) {<br> return;<br> }<br> timer.schedule(timerTask, 0, 500);<br> }<br> |
以上就是直播电商源码,活动开始时间计时器实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现