实现对Activity的定时关闭功能
直接上代码:
InactivityTimer.class类:
/*** Finishes an activity after a period of inactivity.*/
public final class InactivityTimer {private static final int INACTIVITY_DELAY_SECONDS = 5 * 60; //5分钟后自动关闭目标activity/*** 创建只有一条线程的线程池,他可以在指定延迟后执行线程任务,其中一个构造方法可以传入ThreadFractory* JDK 1.5之后有了ScheduledExecutorService,不建议你再使用java.util.Timer,* 因为它无论功能性能都不如ScheduledExecutorService。*/private final ScheduledExecutorService inactivityTimer = Executors.newSingleThreadScheduledExecutor(new DaemonThreadFactory());private final Activity activity;//表示ScheduledExecutorService中提交了任务的返回结果private ScheduledFuture<?> inactivityFuture = null;public InactivityTimer(Activity activity) {this.activity = activity;onActivity();}public void onActivity() {cancel();//5分钟后执行关闭操作inactivityFuture = inactivityTimer.schedule(new FinishListener(activity), INACTIVITY_DELAY_SECONDS, TimeUnit.SECONDS);}private void cancel() {if (inactivityFuture != null) {inactivityFuture.cancel(true);inactivityFuture = null;}}public void shutdown() {cancel();inactivityTimer.shutdown();}/*** 通过自定义ThreadFactory创建一个守护线程*/private static final class DaemonThreadFactory implements ThreadFactory {@Overridepublic Thread newThread(Runnable runnable) {Thread thread = new Thread(runnable);//设置为守护线程,用于守护当前的UI线程thread.setDaemon(true);return thread;}}}
FilishListener.class类:
/*** Simple listener used to exit the app in a few cases.*/
public final class FinishListener implements DialogInterface.OnClickListener,DialogInterface.OnCancelListener, Runnable {private final Activity activityToFinish;public FinishListener(Activity activityToFinish) {this.activityToFinish = activityToFinish;}@Overridepublic void onCancel(DialogInterface dialogInterface) {run();}@Overridepublic void onClick(DialogInterface dialogInterface, int i) {run();}@Overridepublic void run() {activityToFinish.finish();}}
实现对Activity的定时关闭功能相关推荐
- Android前端通过Http协议与J2EE后端数据交互。工具eclipse、MySQL、Tomcat。通过JoSn获取数据。Android端实现对MySQL增删改查功能。
Android:目录 HttpThread.java package com.example.saads; import java.io.BufferedReader; import java.io. ...
- 6行代码实现对TF卡的读写功能
文章目录 前言 一.实现功能 二.材料清单 三.完整代码 四.代码运行结果 前言 shineblink core 开发板(简称Core)的库函数支持TF卡读写功能,所以只需要调用两三个API,即可实现 ...
- 合并表格,并实现对datatable的group by 功能
没有想到好的方法,这是最笨的方法,对datatable的逐行进行汇总. DataTable ddt = new DataTable(); for (int i = 0; i ...
- 用百度富文本编辑器UMeditor实现对html文本的编辑功能,vue中使用UMeditor编辑器
百度 UMeditor 编辑器资源免费下载地址: https://download.csdn.net/download/WanweI897/67403979 该编辑器没有官方文档,不过百度另一个编辑器 ...
- html 保存草稿,利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱...
利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱 直接看代码吧 1.引入ueditor和ueditor的使用我就不细说了 详情请戳http://blog.c ...
- 使用underscore模块的template功能实现对HTML的数据注入+template实现数据注入(后面更新)
使用underscore模块的template功能实现对HTML的数据注入 安装underscore 代码是:npm i underscore 查看是否安装成功 server.js文件 var htt ...
- 通过威纶通触摸屏的穿透功能实现对FX3U系列PLC程序的上传下载和监控的具体方法
通过威纶通触摸屏的穿透功能实现对FX3U系列PLC程序的上传下载和监控的具体方法 由于FX3U系列PLC本体只有一个通信接口,如果和威纶通触摸屏连接后,此时就无法用电脑监控调试程序了,非常的不方便. ...
- C#之windows桌面软件第五课:串口助手实现定时关闭设备、鼠标移动使按钮颜色变化功能
本节在串口助手上实现: 1.定时关闭设备 2.移动鼠标使按钮颜色变换 Form1.cs代码如下: using System; using System.Collections.Generic; usi ...
- 基于STM32F407的FSMC功能实现对TFT的控制
对FSMC的理解 1.FSMC即灵活的静态存储控制器,能够连接同步.异步存储器和 16 位 PC 存储卡.专业讲解可以看STM32F4xx中文参考手册. 2.个人理解: 其实它就是为了扩展存储做了一种 ...
最新文章
- react.js做小程序_如何使用React.js构建现代的聊天应用程序
- FillMode详解
- SQL server 2000建立远程连接(局域网)
- win10,pip更新后,Spyder打不开
- ccf-csp #201703-2 学生排队
- SVN和Git 介绍,区别,优缺点以及适用范围
- 安装部署OpenStack(添加资源)
- Two Paths CodeForces - 14D(暴力+树的直径)
- 应用层组播、IP组播
- 华为荣耀七能升级鸿蒙系统吗,华为鸿蒙系统来了,你知道哪些华为手机荣耀手机可以升级吗?...
- pyhton中的wsgi是什么?
- QueryWrapper 一些常用操作 or like in 大于 小于 操作
- Linux自动化运维第十八课
- android软键盘自动弹出,android安卓editText自动弹出软键盘(输入键盘)
- 【OpenCV学习笔记】【错误处理】计算机缺失MSVCP120D.dll
- nb信号和4g信号_【行业】万物互联的世界NB-IoT VS 4G,到底哪个更能打?
- CH552 USB HID键盘
- 实例详解ISA防火墙策略元素
- SAP 安全证书的导入
- 【转载】自然语言处理(NLP)的历史、发展、成果和难题,以及在教育领域的应用情况