こんにちは、非同期タスクを使用してスプラッシュ スクリーンに遅延を追加したかったのですが、どうすればよいかわかりません。これまでの私の 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 を代用として使用しようとしましたが、これは同じ問題につながります。これを適切に行う方法はありますか?