Android监听idle状态

最近遇到一个需求,app五分钟未操作需要返回到主页面。一开始就想到去监听onTouch和onClick事件,这个方法看似可行,但是实际操作起来还是很繁琐的,一不小心就达不到需要的效果。然后就果断放弃了。后来看api发现activity中有一个叫onUserInteraction()的方法,这个方法可谓是很吊的,我们先来看一下api上关于这个方法的说明。

第一句话已经说得非常明显了,只要是activity有touch,click操作这个方法都会响应,关键是操作activity中的fragment时也会响应到该方法,真是爽爆炸有木有。

activity和fragment的操作我们是解决了,现在轮到一些弹窗的操作响应。拿dialog来举例,当click或touchdialog的时候该方法并不会响应,而且在dialog类中也并未找到类似的方法(如果有请指出)。这就让人很尴尬了,难道要在把dialog中的控件全都监听上onTouch? 这样肯定是要不得的。

上面说的太多了,以下给出自己的解决方案

1.首先定义一个全局的变量lastOperationTime来记录上一次操作的时间

2.在baseactivity中来起一个线程来不断地检测程序未操作的时间,在onresume里面开启线程

3.关于dialog的操作(项目中只用到了dialog这一种弹窗,popupwindow。。。请参照)

dialog实现了dismiss,onclick,ontouch方法,并在构造函数里面也做出了相应的处理,这样几乎囊括了dialog所有的操作。继承该dialog时请使用父类提供的onClick,onTouch方法。

至此基本上就完工了,如有不足欢迎指正

猜你喜欢

转载自blog.csdn.net/u013894711/article/details/53217841