我正在尝试从另一个AsyncTask 的doInBackground()
-方法启动一个AsyncTask...
这可能吗?如果是,我该如何实现?
后期编辑:
我的想法是,我启动一个异步任务,它将从 Tweeter 获取我的状态……一切正常,直到这里……但是当我遇到一些特定的推文时,我需要用我的服务器的一些信息来修改它们,在这里我会进行另一个网络操作,因为我需要等到我从我的服务器获取信息,所以我这样做:
GetContent getContentServiceAsyncTask = new GetContent(context);
try {
tweetText = Uri.decode(getContentServiceAsyncTask.execute(
URL_GET_CONTENT, jsonRequest).get());
} catch (InterruptedException e) {
Log.e(TAG_DEBUG, "InterruptedException: ", e);
} catch (ExecutionException e) {
Log.e(TAG_DEBUG, "ExecutionException: ", e);
}
这是从 doInBackground() 方法中已经启动的 AsyncTask 开始的......
我知道我可以在 AsyncTask 中添加方法并在 doInBackground() 方法中调用它们,但我需要在其他地方使用它们,我从 onPostExecute 启动这些 AsyncTasks ...
如果你们认为有一个简单的解决方法,不会影响我的性能,那就太好了......如果没有,我会制作一些静态方法,我会调用我需要的所有 AsyncTasks (但这需要我修改很多代码)
最佳答案
AsyncTasks
应该从 main (UI) 线程运行。您不应从 doInBackground 运行另一个 AsyncTask,因为此方法是在非 UI 线程上执行的。
对于你的情况,我可以建议你两件事:
- 将两个 AsyncTak 的处理合并到一个请求中
- 从第一个任务的 onPostExecute 启动第二个 AsyncTask。
关于android - 从另一个 AsyncTask doInBackground() 启动 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520668/