gpt4 book ai didi

android - AsyncTask 不异步运行

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:02 26 4
gpt4 key购买 nike

如果我没记错的话,下面应该是一样的。
使用 AsyncTask:

private class GetDataTask extends AsyncTask<String, Void, String>{

@Override
protected void onPreExecute() {

}

@Override
protected String doInBackground(String... params) {
return NetConnection.getRecordData(mUserId, mUserPassword);
}

@Override
protected void onPostExecute(String result) {
parseJson(result);
}
}

使用线程:

    new Thread( new Runnable() {

@Override
public void run() {
String res = NetConnection. getRecordData(mUserId, mUserPassword);
parseJson(res);

}
}).start();

但是在上传文件时,AsyncTask 运行同步,而 Thread 运行异步(并行)。
为什么会这样?为什么 AsyncTask 会这样? AsyncTask 不是应该异步运行吗?
我有点困惑,所以我需要你的帮助。
这就是我调用 GetDataTask 的方式:

new GetDataTask().execute()

我更喜欢使用 AsyncTask,但它不适合我。请引用我的early question了解更多详情

最佳答案

从 4.x 开始,调用 2 个 AsyncTasks 将导致它们串行执行。

解决此问题的一种方法是使用以下代码

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else {
myTask.execute();
}

您可以在以下位置阅读更多信息:http://commonsware.com/blog/2012/04/20/asynctask-threading-regression-confirmed.html

关于android - AsyncTask 不异步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com