首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我们在java线程完成任务之前关闭它(向后),活动就会崩溃。

如果我们在java线程完成任务之前关闭它(向后),活动就会崩溃。
EN

Stack Overflow用户
提问于 2020-10-14 04:51:05
回答 1查看 90关注 0票数 0

我在活动的Oncreate中创建了一个线程,然后在任务结束后对活动的UI进行更改。任务需要5-6秒,这就是我使用线程的原因。

以下是代码:

代码语言:javascript
复制
Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                final String folderSize = calculateFolderSize(); // my work 
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText(folderSize + " GB");
                    }
                });
            }
        });
        
        thread.start();

一切正常,我启动活动,然后计算大小,然后更新textView并显示大小。平均需要6秒。

问题-当我打开活动时,线程将在OnCreate方法中启动。如果在线程完成之前按后退按钮,那么我的应用程序将在6秒内崩溃(当线程完成其工作时)。

这个问题的解决方案是什么,有没有其他的选择,或者我需要阻止线程在后面按下那个活动。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-14 05:42:11

您的runOnUiThread代码似乎是在活动被销毁后调用的。

您应该检查活动是否被破坏:

代码语言:javascript
复制
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                final String folderSize = calculateFolderSize(); // my work
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (!isDestroyed())
                            textView.setText(folderSize + " GB");
                    }
                });
            }
        });
        thread.start();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64346783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档