java - 在长时间运行的线程完成之前显示 Android 布局?

标签 java android performance android-layout android-intent

我需要在启动主要 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/

相关文章:

java - 在使用 junit 进行测试期间,Android 处理程序为空

java - fragment 不替换父 Activity 的容器布局

android - 如何在 Jetpack Compose 中限制图像平移到框的边缘?

php - 从 mysql 输出高效创建 json - 在唯一值中分组

javascript - JSON 嵌套对象与 Javascript 数组

java - Java 11下使用CXF的类转换异常

java - 如何在 Android java 代码中同时使用 CordovaActivity 和 AppCompatActivity?

php - 如何在 PHP7 中使用 Memcached?

java - 使用 MMMM 和 MMMMM 使用 SimpleDateFormat 提取月份名称有什么区别

java - 找不到用于定界符text/html; charset = UTF-8的插件!注册的插件:[org.springframework.hateoas.mediatype.hal.HalLinkDiscoverer @