好的,所以我正在开发一个带有新闻的Android应用程序。当用户第一次运行App时,会运行一个单独的线程,然后启动无限时(true)循环,在一个循环内,连接器将文本从Internet下载到通知并发送此通知,然后休眠8小时。哪种方式更好地使它工作得最好,一个如上所述的线程或报警管理器?或者,也许有不同的更好的方式?
现在我已经做了两种测试方法,两种方法都运行良好,但我不知道如何检查哪一种效率更高,哪种方式不会被android占用,因为它会占用更少的资源等等。
第二个问题,当有人杀了应用程序时,有没有办法恢复循环?我正在使用Advanced Task Killer Free和一个应用程序Flashy(Flash Player Loader)进行测试。我杀死了Flashy,但是5秒后app再次运行,所以它可能是可能的,但是怎么样?
对于那些认为我正在开发烦人广告的人 - 不,我正在开发的应用程序只是从互联网上读取新闻。
希望有人帮忙, 提前谢谢。
答案 0 :(得分:7)
线程与AlarmManager
<强> AlarmManager 强>
根据Android doc
警报管理器适用于您想要的情况 应用程序代码在特定时间运行,即使您的应用程序是 目前没有运行。
所以你在这里获得的优势就是你可以在将来执行特定的任务,即使你的应用程序没有处于运行状态。(在这里,你可以自豪地称自己为优秀的android公民,因为你没有驻留在android内存中来完成你的任务你只是告诉android我希望在特定时间执行此任务,Android会在特定时间自动启动你的应用程序,即使它没有运行。
如果你想用线程做同样的事情那么你的线程应该是活着的,直到时间任务没有开始执行。(缺点是android不会杀死线程,直到时间进程活着你的胎面将不必要吃记忆)。
希望这能清除你的怀疑。
答案 1 :(得分:1)
在你的情况下,我肯定会使用报警管理器。 作为一般经验法则,如果您的应用程序“休眠”并定期检查新内容的时间间隔很长(8小时很长),您应该使用警报管理器。
通过这种方式,您的应用无需在后台运行,从而节省了电池寿命,并且在内存不足的情况下Android会杀死服务,不会影响应用程序的功能。
关于你的第二个问题 - 如果Android系统由于内存不足而导致服务中断,它将尽快重启。但是,如果您手动终止该服务,则不应重新启动它,即使可能通过某些黑客攻击也是如此。