我需要在启动主要 Activity 时运行一个长任务,我必须将其放入 onCreate()
方法而不是 onResume()
因为我只希望它运行一次,而不是每次 Activity 获得焦点时(即从对话框关闭时)运行。
问题是,在长时间运行的任务完成之前,布局不会显示,并且只会让应用程序显示黑屏。
我认为也许按如下方式在另一个线程中启动它就足够了,但主线程似乎仍在等待此完成才能继续布局?
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();
}
最佳答案
应该是
launcherThread.start();
否则,Runnable
将在调用 run 方法的线程上下文中执行。
还有
inc_menu = (MenuContainer) this.getLayoutInflater().inflate(R.layout.main, null);
setContentView(inc_menu);
可以更改
setContentView(R.layout.main);
在这种情况下显然没有理由使用充气机。
关于java - 在长时间运行的线程完成之前显示 Android 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628774/