0

私のAndroidアプリケーションでは、シナリオはこれです-

SDカードにいくつかの画像を保存しています。今、私のアプリには画像ビューがあり、スライド ショーが実行されているように、この画像ビューを継続的に更新する必要があります。これを行うには、SD カードから画像を 1 つずつ取得し、同じ ImageView に設定する必要があります。また、ImageView の画像変更の間隔は固定です。したがって、これらの画像を取得するための情報を格納するカーソルがあります。今、カーソルを1つずつ移動し、SDカードから画像を取得してImageViewに設定するためのアプローチはどうあるべきか疑問に思っています。

Timer Task と Timer を使用する必要がありますか、それとも Handler などを使用する必要がありますか?

これは私のアプリの最初のポイントであり、正しい方向に始めたいので助けてください.

4

1 に答える 1

1

SD カードから大きなデータを取得しているため、スレッドを使用してビットマップを取得/デコードすることをお勧めします。

この場合、Timer は、スケジュールされた期間、独自の Java スレッドで実行されるため便利です。ただし、非 UI スレッドから UI 要素を更新することはできないことに注意してください。したがって、ビットマップが完全に読み込まれ、最終的にデコードされたビットマップが ImageView に配置されるように、同期要素を配置する必要があります。その場合、とにかく Handler を使用してメッセージ キューを UI スレッドに送信する必要があります。

したがって、Handler と AsyncTask を組み合わせて使用​​することをお勧めします。でビットマップを取得してデコードする AsyncTask クラスを作成しますdoInBackground()。で を更新ImageViewonPostExecute()ます。Handler を使用して、新しい AsyncTask を作成し、N ミリ秒ごとに (ビューを更新するたびに) 実行します。

これの利点の 1 つは、すべての画像検索を 1 つのクラスに保持することです。カーソルを開く、取得する、閉じることができます。これは、実行時間の長いカーソルを開いたままにしておくよりも安全です。

于 2012-08-23T14:19:43.713 に答える