2011-02-10 9 views
0

私のアプリでは2つのタブがあり、1つは連絡先を取得し、1つはポストコードをジオコードし、もう1つのタブは地図上にプロットします。(潜在的に)より長いタスクがいつ実行されるべきですか?

ジオコーディング処理にかなりの時間がかかることがあります。そのような長さのプロセスを処理するためのベストプラクティスは何ですか?

アプリの起動時にローディングバーを表示して、すべてのジオコーディングを実行する必要がありますか?ユーザーがジオコーディングを行うためにボタンをクリックする必要がありますか?

答えて

1

別のスレッドに約200ms以上かかる操作を移動して、アプリケーションがロックされないようにしてから、そのスレッドからインジケータを更新してユーザーの進行状況を表示する必要があります。

あなたはAsyncTaskクラスについて学ぶ必要があります。これは、応答性の高いAndroidアプリを書くための中心です。

http://developer.android.com/reference/android/os/AsyncTask.html

これは、スレッドが容易になりよりもかなり簡単ラッパーです。スレッドが不要になったときにスレッドを停止することを忘れないでください。 onPause()内にあります。

私はAsyncTaskサブクラスを独自のクラスファイル(内部クラスとしてではなく)に配置し、アクティビティコンテキストをコンストラクタパラメータとして渡す傾向があるため、AsyncTaskスレッドは常にユーザーインターフェイスを更新するアクティビティに簡単にアクセスできますdoInBackgroundからではありません)。

AsyncTask

http://foo.jasonhudgins.com/2010/05/limitations-of-asynctask.html

のいくつかの制限事項
関連する問題