0

ロゴ画像を表示するアニメーションを含むログイン アクティビティがあり、アニメーションの実行中にバックグラウンドでログイン プロセスが実行されています。アニメーションとログイン プロセスの両方が終了するまで待ってから、プログラムの次の部分を実行したいと考えています。
私の最初の試みは、ログインプロセスをスレッドに入れ、スレッドが終了するまでブロックするためにonAnimationEnd使用しています。 これは良い解決策のようですが、私は を使用しているため、メインの UI スレッドがブロックされ、ANR が発生する可能性があります。を使用しようとしましたが、イベントを処理できません。問題を解決する他の方法はありますか?thread.join()
thread.join()AsyncTaskonAnimationEnd

コードは次のようになります。

protected void onCreate(Bundle savedInstanceState) {
    ........
    title.startAnimation(set);
    loginProcess.start();
    ........
}

public void onAnimationEnd(Animation animation) {
    try {
        loginProcess.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    ........
}
4

1 に答える 1

1

AsyncTaskを使用して、次のようにします。

@Override
protected void onPreExecute() {
        title.startAnimation(set);
}

@Override
protected void onPostExecute(String result) {
       title.clearAnimation();
}
于 2013-07-17T05:02:32.150 に答える