4

我们应该从onHandleIntent()方法中启动异步任务IntentService吗?我读到了onHandleIntent(),所以从那里worker thread开始会安全吗?asyncTask

4

3 回答 3

3

IntentServices 已经是后台进程;无需从那里启动 AsyncTask。此外,AsyncTask从任何地方开始都是“安全的”;这是一个帮助你多线程的助手类。如果您在 Activity 中使用它,请确保不要View在 AsyncTask 的-method 中操作它。doInBackground()

如果您需要在 IntentService 中生成多个线程,只需使用:

新线程(可运行 r).start();

请参阅如何在 Android 中运行可运行线程?

如果您需要调用某种回调,请使用Handler。例如,请参阅http://www.vogella.com/articles/AndroidPerformance/article.html#handler

于 2012-11-21T10:21:36.060 回答
0

AsyncTask 类用于提供实现多线程的机制,因此您的事件线程不会被挂起,但是当您使用服务时,您不应该使用 Service 中的 AsyncTask,而是可以使用线程,如果一些长时间运行的任务将在服务中执行。

于 2012-11-21T10:21:56.277 回答
0

如果您确实需要在 IntentService 中使用 AsyncTask,您可以在 AsyncTask 中创建一个调用 de doInBackGround 和 onPostExecute 的方法。像这样的东西:

void executeFlowOnBackground(Params params) {
  onPostExecute(doInBackground(params));
}

就我而言,我这样做是因为所有 App 请求都是由扩展 AsyncTask 的类发出的,并且由于实现难以重构代码。

于 2016-04-18T17:24:59.507 回答