1

読み込み中の画像として表示される 12 個の画像を含むアニメーションがあります。それ自体は問題なく動作しますが、httpClient クラスを使用してオンライン データベースからコンテンツを取得すると、完全にフリーズし、コンテンツのフェッチが完了すると、別の画像でアニメーションが停止したことがわかります。

コンテンツが db からフェッチされている間に画像をロードするにはどうすればよいですか?

ここにいくつかのコードがあります:

クラスメンバー:

ImageView loading;
AnimationDrawable loadAnimation;

作成時:

    LinearLayout main = (LinearLayout) findViewById(R.id.loading);
    loading = new ImageView(this);
    loading.setImageResource(R.drawable.loading);
    loadAnimation = (AnimationDrawable)loading.getDrawable();
    main.addView(loading);

これを使用して、コンテンツがフェッチされる前にアニメーションを開始します。

loadAnimation.start();

フェッチが完了すると、次のようになります。

loadAnimation.stop();
4

1 に答える 1

2

これが発生する理由は、メイン スレッドでデータベース操作を実行しているためです。これにより、ブロッキング コードの実行中に UI がフリーズします。これを回避するには、これらの操作を別のスレッドで実行する必要があります。AsyncTaskファイルを非同期的にダウンロードする方法の例を確認するには、使用を調べてください。

あなたの場合、でアニメーションを開始し、onPreExecute()で停止しonPostExecute()ます。

于 2013-02-03T21:46:58.477 に答える