Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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 暂停后台线程上运行的任务以运行更高优先级的任务_Android_Android Asynctask_Android Service_Android Handler - Fatal编程技术网

Android 暂停后台线程上运行的任务以运行更高优先级的任务

Android 暂停后台线程上运行的任务以运行更高优先级的任务,android,android-asynctask,android-service,android-handler,Android,Android Asynctask,Android Service,Android Handler,我有一个在后台线程上做一些繁重工作的服务。它基本上下载一个大的zip(>5MB),存储它,解压它,解析XML并将信息存储在SQLite数据库中 当服务完成它的工作时,我有时不得不运行一个快速的后台任务(比如登录用户)。但是,由于服务非常繁忙(通常提取zip文件),我的短任务需要一段时间才能运行(用户必须等待) 有没有办法完全暂停我的服务(以及它的后台异步任务),以便运行新的更高优先级的任务 谢谢 根据这一点: 为什么不试试简单的java线程而不是使用AsyncTask呢。你也可以尝试给予它更大

我有一个在后台线程上做一些繁重工作的服务。它基本上下载一个大的zip(>5MB),存储它,解压它,解析XML并将信息存储在SQLite数据库中

当服务完成它的工作时,我有时不得不运行一个快速的后台任务(比如登录用户)。但是,由于服务非常繁忙(通常提取zip文件),我的短任务需要一段时间才能运行(用户必须等待)

有没有办法完全暂停我的服务(以及它的后台异步任务),以便运行新的更高优先级的任务

谢谢

根据这一点:


为什么不试试简单的java线程而不是使用AsyncTask呢。你也可以尝试给予它更大的优先权,但在我看来,优先权并不那么有效

您在服务中使用简单线程还是异步任务?请注意,在大多数Android OS版本上,所有AsyncTask都在同一线程上运行,因此如果在服务中使用AsyncTask进行长时间操作,它将阻止所有未来的AsyncTask。这可能是问题的根源,也可能不是问题的根源(需要更详细的信息)。如果不是这样,另一个建议是降低服务线程,其附带好处是它甚至可以提高UI响应能力。失败。设计用于在用户登录之前下载数据的应用程序。@Kai哇,我不知道。我认为每一个新的异步任务都会产生一个新线程。那么,我如何降低我服务中的线程?@omegatai我猜您在服务中使用了AsyncTask,这肯定会阻止其他AsyncTask操作。您应该将服务代码更改为使用线程,并可以选择设置其优先级(
thread.setPriority(thread.NORM\u priority-1)
)。如果这对您有效,请告诉我,我会将其转换为答案;)@Kai:异步任务的优先级会比优先级为thread.NORM\u priority-1的线程高吗?顺便问一下,异步任务的优先级是什么?在Android中直接使用Java线程不是一个好的做法,因为开发人员应该手动处理回调,以及应该在后台做什么,这会导致大量的模板代码。另一方面,使用Asynctasks也可以创建后台线程,而无需任何麻烦,并在Prexecute doInBackground On PostExecute等上重写其方法。。。帮助您拥有更清晰的代码并有效地管理回调。