在Async Task中添加一个可运行的线程,用于启动屏幕延迟

时间:2012-08-23 05:44:17

标签: android

您好我想使用异步任务在启动画面上添加延迟,但我无法弄清楚应该怎么做。到目前为止,这是我的DoInBackground代码:

@Override
        protected Integer doInBackground(String... params) {

            Thread SplashThread = new Thread() {
                    @Override
                    public void run() {
                        try {
                            int waited = 0;
                            while(running && (waited < delayTime)) {
                                sleep(100);
                                if(running) {
                                    waited += 100;
                                }
                            }
                        } catch(InterruptedException e) {
                            // do nothing
                        } finally {
                            finish();
                            stop();
                        }
                    }
                };
                SplashThread.start();

            return null;
        }

我认为返回null的部分是导致问题的主要原因,因为它结束了我的异步任务,即使我的SplashThread仍然在后台运行,在这些部分之后留下泄漏导致错误。我也尝试使用counDownTimer作为替代,但这导致同样的问题。有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

您不需要在doInBackground的{​​{1}}方法中启动的其他主题。 AsyncTask本身在另一个线程中运行AsyncTask方法, 因为doInBackground循环,它很可能是不必要的。在while方法中完成您想要完成的工作,然后返回。如果您需要/需要一些额外的延迟(尽管您应该不惜一切代价避免这种情况),您可以使用doInBackground方法在返回之前暂停线程。