我们应该从
IntentService
的onHandleIntent()
方法中开始异步任务吗?我读到过onHandleIntent()
在工作线程
中运行,那么从那里启动asyncTask
是否安全?IntentService
的onHandleIntent()
方法中开始异步任务吗?我读到过onHandleIntent()
在工作线程
中运行,那么从那里启动asyncTask
是否安全?IntentService
已经是后台进程,无需从此处启动AsyncTask
。同时,从任何地方启动AsyncTask
都是“安全”的;它是一个帮助你多线程的辅助类。只需确保在AsyncTask
的doInBackground()
方法中不要操作View
,如果您在Activity中使用它。IntentService
内部产生多个线程,请使用:
请参见如何在Android中运行Runnable线程?示例。new Thread(Runnable r).start();
void executeFlowOnBackground(Params params) {
onPostExecute(doInBackground(params));
}
AsyncTask类用于提供一种机制来实现多线程,以便您的事件线程不会挂起,但是由于您正在使用服务,因此不应在服务中使用AsyncTask,而应该使用线程,如果需要执行某些长时间运行的任务,则可以在服务中使用。
AsyncTask
都不安全:https://dev59.com/_W855IYBdhLWcg3wuGsM - 它只能从主线程启动,如果你在onHandleIntent
中启动它,可能会起作用,因为它有一个Looper
。 - zaplonHandleIntent(Intent intent)
方法内直接下载文件。并且在所有设备和各种操作系统中都能正常工作。 - Rumit Patel