我正在使用CountDownTimer的onTick(long l)
函数来检查某些条件,如果它们满足,那么我调用一个活动的函数来执行一些与UI相关的任务。但是我想知道是否有可能由于方向更改而导致活动被销毁和重新创建,onTick()
将被运行,并且可能在我的活动中调用该函数,可能还没有活动创建
如果有任何关于如何纠正这个问题的想法?
答案 0 :(得分:0)
我会使用AlarmManager和BroadcastReceiver来处理重复的事情。
另请阅读Listening for and broadcasting global messages and setting alarms 关于Android AlarmManager
的其他一些教程但这会给你最好的答案,只需阅读alarmmanager tutorial
答案 1 :(得分:0)
使用Service可能是一个不错的选择。这些不是以与活动相同的方式创建和销毁的。当您的活动消失时,服务将继续运行(在某些特殊情况下除外)。因此,如果要跨活动实例继续计时器,请尝试使用服务。
一个友好的警告:当设备内存不足时,服务比活动更容易被杀死(删除用户可以看到的东西比用户看不到的东西更好)。假设您希望此计时器从一开始就一直工作直到您明确地终止它,那么最好在操作系统删除服务时继续恢复服务。您可以通过使其onStartCommand方法返回START_REDILIVER_INTENT常量来完成此操作。虽然这并不能保证服务在整个时间间隔内仍然存在,但它确实意味着它最终会回来。如果您的应用程序不会消耗太多内存,则不必担心这一点。如果是这样,那么您需要通过使用计时器来发挥创意。
答案 2 :(得分:0)
另一个想法:handle the screen orientation change yourself阻止您的应用程序被重置。如Android开发者网站所述,这种方法有其负面影响:
自行处理配置更改会使使用备用资源变得更加困难,因为系统不会自动为您应用这些资源。此技术应被视为最后的手段,不建议用于大多数应用程序。
根据您的应用程序,这可能没问题。无论哪种方式,它都是对您的清单文件进行相对简单的更改,因此您可以尝试一下,看看会发生什么。