我们应该从onHandleIntent()
方法中启动异步任务IntentService
吗?我读到了onHandleIntent()
,所以从那里worker thread
开始会安全吗?asyncTask
3 回答
IntentService
s 已经是后台进程;无需从那里启动 AsyncTask。此外,这是一个帮助你多线程的助手类。如果您在 Activity 中使用它,请确保不要AsyncTask
从任何地方开始都是“安全的”;View
在 AsyncTask 的-method 中操作它。doInBackground()
如果您需要在 IntentService 中生成多个线程,只需使用:
新线程(可运行 r).start();
如果您需要调用某种回调,请使用Handler。例如,请参阅http://www.vogella.com/articles/AndroidPerformance/article.html#handler
AsyncTask 类用于提供实现多线程的机制,因此您的事件线程不会被挂起,但是当您使用服务时,您不应该使用 Service 中的 AsyncTask,而是可以使用线程,如果一些长时间运行的任务将在服务中执行。
如果您确实需要在 IntentService 中使用 AsyncTask,您可以在 AsyncTask 中创建一个调用 de doInBackGround 和 onPostExecute 的方法。像这样的东西:
void executeFlowOnBackground(Params params) {
onPostExecute(doInBackground(params));
}
就我而言,我这样做是因为所有 App 请求都是由扩展 AsyncTask 的类发出的,并且由于实现难以重构代码。