Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Java 使AsyncTask(或服务)不可修改(或接近它的东西)_Java_Android_Service_Kill_Dalvik - Fatal编程技术网

Java 使AsyncTask(或服务)不可修改(或接近它的东西)

Java 使AsyncTask(或服务)不可修改(或接近它的东西),java,android,service,kill,dalvik,Java,Android,Service,Kill,Dalvik,在我的应用程序中有一个异步任务,它在后台运行了很长时间。问题是,在内存不足的情况下,它会被VM杀死,有没有办法提高应用程序的优先级,这样就更难杀死它?我应该改用服务吗?我唯一的目标是使其难以杀戮,任何建议或指导都将不胜感激,谢谢。我建议您将其作为一项服务,并使用startForeground(),这将使其更具抵抗力。但即使这样,它也可能在内存不足时停止。如果您的服务被终止,那么系统会在资源允许的情况下尽快重新启动它 因此,让它成为一个服务(如果它不做任何明确面向用户的事情,比如播放音乐,那么它不

在我的应用程序中有一个异步任务,它在后台运行了很长时间。问题是,在内存不足的情况下,它会被VM杀死,有没有办法提高应用程序的优先级,这样就更难杀死它?我应该改用服务吗?我唯一的目标是使其难以杀戮,任何建议或指导都将不胜感激,谢谢。

我建议您将其作为一项服务,并使用
startForeground()
,这将使其更具抵抗力。但即使这样,它也可能在内存不足时停止。

如果您的服务被终止,那么系统会在资源允许的情况下尽快重新启动它


因此,让它成为一个服务(如果它不做任何明确面向用户的事情,比如播放音乐,那么它不应该是一个前台服务),而是一个可以保存其状态的服务(
onMemoryLow()
onDestroy()
方法)。因此,重新启动后,它可以在用户不知情的情况下恢复其进程。

不,没有,否则每个人都会滥用它。如果操作系统终止了你的服务,那么它就有理由这样做。如果条件允许,并且您的服务符合条件,如果Android认为应该重新启动,它将重新启动。

感谢您的快速回复,您能解释一下为什么您的解决方案会比AsyncTask更好吗?如果您的主服务是资源密集型的,您可能还想实现一个简单的,轻量级服务,只检测主服务并根据需要重新启动它。其想法是轻量级服务不太可能被终止。从理论上讲,它应该工作得更好,但你需要测试它,看看它在实践中是如何工作的。谢谢你,j0ntech,我可能会接受你的建议。你在做什么,资源如此密集?你能把每个请求分解成更小的请求吗?