这是我的应用程序第一次活动的onCreate方法。它会初始化所有Widgets,然后启动一个Thread来从Internet加载模型数据。在某些情况下,当网络真的很慢或没有响应时,"initializeModelThread"
似乎占用整个CPU并且不允许onCreate Methode完成。
在一个案例中,我看到在300毫秒后调用Log.v("Time...)
,但屏幕保持黑色约20秒,直到HttpException停止initalizeModelThread
。您已经可以看到我将线程的优先级设置为低。
在这种情况下,使用AsyncTask会有帮助吗?你对这个问题还有其他想法吗?
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));
}
答案 0 :(得分:0)
AsyncTask
在这里没有什么区别。
不是在onCreate()
方法上创建线程,而是在onStart()
方法上执行。
答案 1 :(得分:0)
问题是我在“initializeWidgets”中使用了谷歌地理反向编码功能(GeoCoder),后者从网上下载了数据。 90%的案例真的很快。现在,在将下载移动到AsyncTask
之后,再次出现这种延迟