千锋教育论坛

查看: 4361|回复: 21

实现对Activity的定时关闭功能

[复制链接]

13

主题

130

帖子

214

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 11:51:23 | 显示全部楼层 |阅读模式
实现对Activity的定时关闭功能

InactivityTimer.class类:
  1. /**
  2. * Finishes an activity after a period of inactivity.
  3. */  
  4. public final class InactivityTimer {  
  5.   
  6.     private static final int INACTIVITY_DELAY_SECONDS = 5 * 60; //5分钟后自动关闭目标activity  
  7.     /**
  8.      * 创建只有一条线程的线程池,他可以在指定延迟后执行线程任务,其中一个构造方法可以传入ThreadFractory
  9.      * JDK 1.5之后有了ScheduledExecutorService,不建议你再使用java.util.Timer,
  10.      * 因为它无论功能性能都不如ScheduledExecutorService。
  11.      */  
  12.     private final ScheduledExecutorService inactivityTimer = Executors.newSingleThreadScheduledExecutor(new DaemonThreadFactory());  
  13.     private final Activity activity;  
  14.     //表示ScheduledExecutorService中提交了任务的返回结果  
  15.     private ScheduledFuture<?> inactivityFuture = null;  
  16.   
  17.     public InactivityTimer(Activity activity) {  
  18.         this.activity = activity;  
  19.         onActivity();  
  20.     }  
  21.   
  22.     public void onActivity() {  
  23.         cancel();  
  24.         //5分钟后执行关闭操作  
  25.         inactivityFuture = inactivityTimer.schedule(new FinishListener(activity), INACTIVITY_DELAY_SECONDS, TimeUnit.SECONDS);  
  26.     }  
  27.   
  28.     private void cancel() {  
  29.         if (inactivityFuture != null) {  
  30.             inactivityFuture.cancel(true);  
  31.             inactivityFuture = null;  
  32.         }  
  33.     }  
  34.   
  35.     public void shutdown() {  
  36.         cancel();  
  37.         inactivityTimer.shutdown();  
  38.     }  
  39.   
  40.     /**
  41.      * 通过自定义ThreadFactory创建一个守护线程
  42.      */  
  43.     private static final class DaemonThreadFactory implements ThreadFactory {  
  44.         @Override  
  45.         public Thread newThread(Runnable runnable) {  
  46.             Thread thread = new Thread(runnable);  
  47.             //设置为守护线程,用于守护当前的UI线程  
  48.             thread.setDaemon(true);  
  49.             return thread;  
  50.         }  
  51.     }  
  52.   
  53. }
复制代码

FilishListener.class类:
  1. /**
  2. * Simple listener used to exit the app in a few cases.
  3. */  
  4. public final class FinishListener implements DialogInterface.OnClickListener,  
  5.         DialogInterface.OnCancelListener, Runnable {  
  6.   
  7.     private final Activity activityToFinish;  
  8.   
  9.     public FinishListener(Activity activityToFinish) {  
  10.         this.activityToFinish = activityToFinish;  
  11.     }  
  12.   
  13.     @Override  
  14.     public void onCancel(DialogInterface dialogInterface) {  
  15.         run();  
  16.     }  
  17.   
  18.     @Override  
  19.     public void onClick(DialogInterface dialogInterface, int i) {  
  20.         run();  
  21.     }  
  22.   
  23.     @Override  
  24.     public void run() {  
  25.         activityToFinish.finish();  
  26.     }  
  27.   
  28. }  
复制代码


1

主题

136

帖子

304

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 12:33:51 | 显示全部楼层
点门进来的 赞一个

13

主题

207

帖子

468

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 12:54:16 | 显示全部楼层
各种羡慕嫉妒很呀/.....

2

主题

150

帖子

332

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 14:05:17 | 显示全部楼层
2048个赞,确实很有实力呀!

7

主题

336

帖子

759

积分

大牛

Rank: 4

发表于 17-3-31 14:55:47 | 显示全部楼层
好东西,收藏,以后期待自己也是其中一员,加油

3

主题

183

帖子

416

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 15:41:11 | 显示全部楼层
秋天虽然到了。但是。。依旧热

1

主题

132

帖子

295

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 16:01:26 | 显示全部楼层
牛逼,,狂赞。。。

4

主题

177

帖子

404

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 16:11:31 | 显示全部楼层
摄影师从来不会出现在镜头里。。

0

主题

143

帖子

314

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 16:21:39 | 显示全部楼层
有美女吗?

0

主题

159

帖子

349

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 18:49:43 | 显示全部楼层
看过顶贴!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们

电话:400-654-7778
交流群:523516910

点击咨询

学习资料

千锋教育

订阅|小黑屋|手机版|千锋教育论坛 ( 京ICP备12003911号-3 

GMT+8, 20-1-22 12:24 , Processed in 0.286524 second(s), 36 queries .

Powered by 千锋教育 X3.2

© 2001-2015

快速回复 返回顶部 返回列表