Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – AsyncTask不是异步运行的大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我没有误会,以下应该是相同的.
使用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应该异步运行?
@L_674_2@点困惑,所以我需要你的帮助.
这就是我调用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不是异步运行的全部内容,希望文章能够帮你解决android – AsyncTask不是异步运行的所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。