0

嗨,我想使用异步任务在启动屏幕上添加延迟,但我不知道该怎么做。到目前为止,这是我的 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 的部分是问题的主要原因,因为它结束了我的 Async 任务,即使我的 SplashThread 仍在后台运行,在薄部分上留下泄漏导致错误。我也尝试使用 counDownTimer 作为替代品,但这会导致同样的问题。有什么方法可以正确地做到这一点?

4

1 回答 1

2

您不需要doInBackgroundAsyncTask. 它AsyncTask本身在另一个线程中运行该doInBackground方法,也因为这个while循环它很可能是不必要的。在方法中做你想做的工作doInBackground,然后简单地返回。如果您想要/需要一些额外的延迟(尽管您应该不惜一切代价避免这种情况),您可以使用该Thread.sleep方法在返回之前暂停线程。

于 2012-08-24T07:09:10.537 回答