2012-11-16 130 views
1

我有一个类扩展了BroadcastReciever,另一个扩展了AsyncTask如何检查手机是否处于闲置状态或手机是否处于闲置状态?

我希望它能够在接收到短信时使用'AsyncTask-extended'类启动定时器。
之后,让我们说,30秒,鉴于手机空闲或没有收到任何用户输入的整个30秒,它会运行一个函数。
否则,它会停止计时器。

我已经得到了定时器的一部分(尽管,随机它会过早停止)
现在我坚持搞清楚如何检查定时器运行时是否有任何用户输入。

有人可以告诉我如何检查所述用户输入吗?

回答

1

因此基本上需要监听ACTION_SCREEN_ON广播意图。

的步骤来实现:

1)设置广播接收器的短信。我们称之为SMSBroadcastReceiver。

2)在您的SMSBroadcastReceiver.onReceive方法,你必须做两件事情:

2.1)使用AlarmManager来安排你的函数的将来执行。不需要使用AsyncTasks。

2.2)注册一个新的侦听ACTION_SCREEN_ON事件的BroadcastReceiver。该接收机的实现应该取消步骤2.1中计划的操作。

此外,仅考虑对ACTION_SCREEN_OFF

+0

好的,我会尝试 –

+0

每当我解锁我的手机时,它都会收到[USER_PRESENT](http://developer.android.com/reference/android/content/Intent.html#ACTION_USER_PRESENT)而不是ACTION_SCREEN_ON。(这可能是因为我启用了锁定屏幕?) 所以我使用两个,只是在案件。除此之外,一切都很好 谢谢! –

+0

显然,要接收ACTION_SCREEN_ON和ACTION_SCREEN_OFF,您需要以编程方式设置接收器。我猜这样做是为了让系统不需要永远唤醒/睡觉,如果有太多的应用程序连接到这个事件。很高兴工作! –

0

当手机闲置时,您当前活动的onStop()方法将被调用。重写此方法,并在调用它时执行你想要的操作。当手机从空闲状态恢复时,方法OnResume()和onRestart()将被调用,您也可以重写它们。有关活动生命周期的详细信息,请点击此处:http://developer.android.com/reference/android/app/Activity.html

+0

这已经很好,如果我工作是扩展Activity类一类注册SMSBroadcastReceiver。 [onUserInteraction()](http://developer.android.com/reference/android/app/Activity.html#onUserInteraction%28%29)方法将是一个简单的解决方案 –

相关问题