我正在开发一个应用程序,它在屏幕打开后每10分钟触发一个操作(比如toast消息),并在屏幕关闭后停止该操作。
我已经为此目的使用了timertask。
我应该开始使用alaramanager而不是timertask还是继续使用timertask?
我知道两者的区别,但不知道该用哪一种。
最佳答案
在大多数情况下,您肯定应该使用AlarmManager
,因为(从文档中):
只要报警接收器的AlarmManager
方法正在执行,onReceive()
就会保持CPU唤醒锁。这保证了在你处理完广播之前,手机不会休眠。一旦onReceive()
返回,AlarmManager
将释放此尾迹锁。这意味着,在某些情况下,只要您的onReceive()
方法完成,手机就会进入睡眠状态。
尽管在屏幕关闭时不需要触发任何事件,AlarmManager
在使用setInexactRepeating
时仍然通过分组报警来节省电池(但这对您并不重要,因为您的间隔是10分钟)。而且,如果应用程序没有运行,它会触发一个事件。我投票支持AlarmManager
,因为这是一个很好的做法,但是考虑到你的情况,你可以离开Timertask
。
顺便说一句,你也可以使用Handler,我相信这是最好的选择。