我正在为应用创建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);
}