android - 从另一个 AsyncTask doInBackground() 启动 AsyncTask

标签 android android-asynctask

我正在尝试从另一个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 应该从 ma​​in (UI) 线程运行。您不应从 doInBackground 运行另一个 AsyncTask,因为此方法是在非 UI 线程上执行的。

对于你的情况,我可以建议你两件事:

  1. 将两个 AsyncTak 的处理合并到一个请求中
  2. 从第一个任务的 onPostExecute 启动第二个 AsyncTask。

关于android - 从另一个 AsyncTask doInBackground() 启动 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520668/

相关文章:

Android后台服务判断前台应用

android - 如何在模拟器中从命令行运行apk

android - 获取 MediaCodec 解码器以 RGBA 格式提供视频帧

java - AsyncTask 不返回 TreeMap

Android异步任务等待其他任务完成

java - onPostExecute 被调用两次并显示双倍结果

java - Android studio - 努力从应用程序 Assets 共享图像/音频/视频文件

javascript - 在我的 android 上按回时,如何使用 javascript 隐藏我的 sidenav?

java - 异步任务发生异常

android - AsyncTask 中的 ProgressDialog