2

プログレスバーを更新するメソッドを実装すると、アップロードが遅くなりますが、プログレスバーのループアップデーターがないと、画像が数秒でアップロードされます(非常に高速です)。プログレスバーを更新するために使用するコードは次のとおりです。

  bufferSize = Math.min(bytesAvailable, maxBufferSize);
  mFileLen =  file.length();

  for (int i = 0; i < bufferSize; i++) {
                publishProgress((int) ((i / (float) mFileLen) * 100));
            } 

とにかく、操作を遅くすることなくプログレスバーを更新できますか?

4

2 に答える 2

2

IntentService で Web サーバーにデータを送信することもできますが、これも非同期です。ユーザーが操作の結果をすぐに処理する必要がない場合は、IntentService が優先されます。完全に背景です。一方、そこから通知を投稿できます。次の質問を自問してください。

  1. ユーザーがデバイスの向きを変更しても、この操作を続行しますか? (Activity が破棄されると Asynctask は停止しますが、IntentService は停止しません)。
  2. 逆に、操作をリロードする必要があるかどうかは気にしません (AsyncTask はもう少し単純です)。
  3. 永続データを保存していますか (IntentService を使用するか、バインドされたサービスと SyncAdapter を使用します)
  4. 操作が完了するまでユーザーはそこにとどまる必要がありますか (はいの場合、AsyncTask は完了時により迅速なフィードバックを提供します。いいえの場合、IntentService はアプリのアクティビティから多少切り離されているため、他のことが起こっている間も楽しく動き回ることができます。
于 2013-09-26T01:12:58.100 に答える