java在长时间运行的线程完成之前显示Android布局?
我需要在主活动启动时运行一个长任务,我必须将它放在onCreate()
方法中,而不是onResume()
,因为我只希望它运行一次,而不是每次活动获得焦点时(即通过关闭对话框)
问题在于,在长时间运行的任务完成之前,布局不会显示,只会让应用程序显示一个黑屏
我想,也许在另一个线程中启动它(如下所示)就足够了,但主线程似乎仍在等待它完成,然后再继续布局
final Thread launcherThread = new Thread(new Runnable() {
@Override
public void run() {
doLongTask();
}
});
launcherThread.start();
任何帮助都将不胜感激
如果它对整个onCreate()
有帮助,则如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
inc_menu = (MenuContainer) this.getLayoutInflater().inflate(R.layout.main, null);
setContentView(inc_menu);
final Thread launcherThread = new Thread(new Runnable() {
@Override
public void run() {
doLongTask();
}
});
launcherThread.start();
}
# 1 楼答案
你搞错了。当你调用线程时。在同一线程的start中运行(),这就是为什么你的界面没有绘制。把它换成螺纹。开始()。它将启动新线程,UI将不会被阻止
# 2 楼答案
应该是的
否则
Runnable
将在调用run方法的线程的上下文中执行还有
可以在
在这种情况下,显然没有理由使用充气机
# 3 楼答案
在为Android编程时,更喜欢使用
AsyncTask