Android方法onCreate()中的线程在10%的情况下仍然停止UiThread
这是我应用程序的第一个活动的onCreate方法。它初始化所有小部件,然后启动一个线程从internet加载模型数据。在某些情况下,当网络速度非常慢或没有响应时,initializeModelThread似乎占用了整个CPU,并且不允许onCreate方法完成 在一个案例中,我看到了Log.vTime。。。300毫秒后调用,但屏幕保持黑色约20秒,直到HttpException停止InitializeModelThread。您已经可以看到我将线程的优先级设置为低 在这种情况下使用AsyncTask会有帮助吗?你对这个问题还有其他想法吗Android方法onCreate()中的线程在10%的情况下仍然停止UiThread,android,multithreading,ui-thread,Android,Multithreading,Ui Thread,这是我应用程序的第一个活动的onCreate方法。它初始化所有小部件,然后启动一个线程从internet加载模型数据。在某些情况下,当网络速度非常慢或没有响应时,initializeModelThread似乎占用了整个CPU,并且不允许onCreate方法完成 在一个案例中,我看到了Log.vTime。。。300毫秒后调用,但屏幕保持黑色约20秒,直到HttpException停止InitializeModelThread。您已经可以看到我将线程的优先级设置为低 在这种情况下使用AsyncTas
public void onCreate( Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
Long time = System.currentTimeMillis();
initializeWidgets();
Thread threadInstance = new Thread(initializeModelThread);
threadInstance.setPriority(Thread.MIN_PRIORITY);
threadInstance.start();
Log.v("Time", "Difference from start " + Long.toString(System.currentTimeMillis() - time));
}
AsyncTask在这里不会有什么不同
不要在onCreate方法上创建线程,而是在onStart方法上创建线程。AsyncTask在这里不会有什么不同
不要在onCreate方法上创建线程,而是在onStart方法上创建线程。问题是我在initializeWidgets中使用了google geo反向编码功能GeoCoder,它从web下载数据。在90%的病例中,这一速度非常快。现在,在将下载转移到AsyncTask之后,再也没有这样的延迟了。问题是,我在initializeWidgets中使用了google地理反向编码功能GeoCoder,它从web下载数据。在90%的病例中,这一速度非常快。现在,在将下载移动到异步任务中之后启动时,再也没有这样的延迟了