4

好的,所以我正在开发一个带有新闻的 Android 应用程序。当用户第一次运行 App 时,一个单独的线程运行,然后一个无限的 while(true) 循环开始,在一个循环内,连接器从 Internet 下载文本到通知并发送此通知,然后休眠 8 小时。哪种方式更好地使其工作得最好,如上所述的线程或警报管理器?或者,也许有不同的更好的方法?

目前我已经做了两种测试方法,两种方法都很好,但是我不知道如何检查哪一种更有效,哪一种不会被android杀死,消耗更少的资源等等。

第二个问题,当有人杀死应用程序时,有没有办法恢复循环?我正在使用 Advanced Task Killer Free 和一个应用程序 Flashy(Flash Player Loader)进行测试。我杀死了 Flashy,但 5 秒后应用程序再次运行,所以它可能是可能的,但是如何?

对于那些认为我正在开发烦人的广告的人——不,我正在开发的应用程序只是从互联网上阅读新闻。

希望有人帮助,在此先感谢。

4

2 回答 2

7

线程与警报管理器

报警管理器

根据 Android 文档

警报管理器适用于您希望应用程序代码在特定时间运行的情况,即使您的应用程序当前没有运行。

因此,您在这里获得的优势是即使您的应用程序未处于运行状态,您也可以在未来执行特定任务。(在这里您可以自豪地称自己为优秀的 android 公民,因为您没有驻留在 android 内存中完成任务)。您只需告诉 android 我想在特定时间执行此任务,Android 将在该特定时间自动启动您的应用程序,即使它没有运行。

如果你想用线程实现同样的事情,那么你的线程应该是活动的,直到时间任务没有开始执行。(缺点是 android 不会杀死线程,直到时间进程是活动的,你的线程会不必要地消耗内存) .

希望这能消除您的疑问。

于 2013-09-26T19:20:41.097 回答
1

在你的情况下,我肯定会使用警报管理器。作为一般经验法则,如果您的应用程序“休眠”并定期检查新内容的时间间隔很长(8 小时是很长的时间),您应该使用警报管理器。

这样您的应用程序就不需要在后台运行,从而节省了电池寿命,并且应用程序的功能不会受到 Android 在内存不足的情况下终止服务的影响。

关于你的第二个问题——如果安卓系统因为内存不足而杀死了一个服务,它会尽快重启它。但是,如果您手动终止该服务,则不应重新启动它,即使可以通过一些黑客攻击也是如此。

于 2013-09-26T19:19:39.737 回答