Asynctask会降低我的UI速度吗?

时间:2014-09-12 22:45:33

标签: android multithreading performance android-asynctask

我正在为应用创建API。当应用程序启动(MainActivity.onCreate())时,会进行初始化调用。这种初始化导致UI滞后一秒钟,我想摆脱滞后。初始化调用中的(较大)事件序列如下:

(1)getDeviceID() generates a UID

(2)setBuild()使用StringBuilder将字符串附加在一起然后sha1 it(可根据要求提供代码)

(3)创建一个名为DopamineRequest的子类AsyncTask线程的实例。这会发送HTTP请求

(4)getInitRequest()通过迭代几个JSONObject并使用LinkedHashSet<String>

来创建System.currentTimeMillis()

(5)执行仅覆盖doInBackground()函数的AsyncTask线程

如果我理解AsyncTask是如何工作的,它会在后台执行,所以除非UI调用阻止它的asyncTask.get(),否则应该对UI没有影响。

是否有其他功能导致滞后或是AsyncTask?

protected static void initBase(Context c){
        if(context!=null)   // already been initialized
            return;

        context = c;
        if(identity == null) {
            identity = new HashMap<String, String>();
        }
        identity.put( "DEVICE_ID", getDeviceID() );           // (1)
        setBuild();                                           // (2)

        URIBuilder uri = new URIBuilder(appID);

        DopamineRequest initRequest = new DopamineRequest();  // (3)
        String initRequest = getInitRequest();                // (4)
        initRequest.execute(uri.getURI(URIBuilder.URI.INIT), initRequest) // (5);

    }

1 个答案:

答案 0 :(得分:0)

我使用Traceview找到了答案。除非调用onPreExecute()或get(),否则AsyncTask不能减慢UI的速度