Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-线程与AlarmManager_Android_Multithreading_Alarmmanager - Fatal编程技术网

Android-线程与AlarmManager

Android-线程与AlarmManager,android,multithreading,alarmmanager,Android,Multithreading,Alarmmanager,好的,我正在开发一个Android应用程序,里面有新闻。当用户第一次运行应用程序时,一个单独的线程运行,然后一个无限while(true)循环开始,在一个循环中,一个连接器从Internet下载文本到通知并发送此通知,然后休眠8小时。哪种方式更好,使其工作得最好,线程与上述方式或报警管理器?或者,也许有另一种更好的方法 现在我已经做了两种测试方法,都很好,但我不知道如何检查哪一种更有效,哪一种不会被android杀死,哪一种消耗更少的资源,等等 第二个问题,当有人杀死应用程序时,有没有办法恢复循

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

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

第二个问题,当有人杀死应用程序时,有没有办法恢复循环?我正在测试高级任务杀手免费和应用程序Flashy(Flash播放器加载程序)。我杀死了Flashy,但5秒后应用程序再次运行,所以这很可能是可能的,但如何呢

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

希望有人能帮忙,
提前谢谢。

对于您的情况,我肯定会使用报警管理器。 一般的经验法则是,如果应用程序“休眠”,并且每隔很长的时间(8小时是很长的时间)例行检查新内容,那么应该使用alarm manager

这样,你的应用程序就不需要在后台运行,从而节省了电池寿命,并且应用程序的功能也不会受到Android在内存不足时关闭服务的影响

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

线程与AlarmManager

AlarmManager

根据安卓文件

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

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

如果你想在线程中实现同样的事情,那么你的线程应该一直处于活动状态,直到任务没有开始执行为止(缺点是android不会在进程处于活动状态之前杀死线程,你的线程会消耗掉不必要的内存)


希望这能消除您的疑虑。

为什么不在alarmmanager中使用intent服务。intent服务有助于完成web工作,并在工作完成时自动关闭。alarmmanager可以在需要时再次唤醒服务。
然后睡8小时
亲爱的上帝,请不要这样做。很好的解释和建议Vipul。我同意你+1