2017-10-18 12 views
2

私はアプリを開発中で、一部のデータをサーバーに送信したいと考えています。サーバーに送信していた更新が定期的に行われたときに、サーバーにデータを送信できました。キューでAsynctaskを呼び出す

ただし、ユーザーの操作に応じて。 1つ以上の呼び出しをサーバーに送信する必要があります。私はスキップすることはできませんし、サーバーへの呼び出しを省略します。

ケース:

レッツは、私は、サーバー上のいくつかのデータを入れasyntaskを起動し、それが5〜6秒を要したとしましょうそのクリック上のボタンを持っていると言うだけで、次の場合を想定。しかし、ユーザーがボタンを複数回押すと、複数のasynaskをトリガーしたい。彼がボタンを7回連続して押したとしよう。したがって、7 AsyncTaskは、順番にキュー内で実行する必要があります。

私はschedularと他のすべてについて聞いたことがありますが、私はasynctaskを使ってそれらを扱う方法も理解できません。

解決策:最初の非同期タスクが完了しない限り、ボタンを無効にすることができますが、要件を満たしていないため、ユーザーと同じ回数だけ非同期タスクを呼び出す必要がありますボタンを押します。

私に助けてください、任意のソースコードをいただければ幸いです。

注:私はUIを更新することはありません。

アップデート:私の必要性の下で

私は特定のデータでasynctaskをキューにしたいと、前のタスクが完了したときに自動的に実行しなければならないとすると、ユーザー出口、それはそれまでとしない限り、実行を継続すべきであるアプリケーションすべての待ち行列asynctaskの実行を完了します。

+0

同時に実行したいですか? –

+0

私の必要性の下で特定のデータを持つasynctaskを待ち行列に入れたい場合、前のタスクが完了したときに自動的に実行しなければならず、ユーザーがアプリケーションを終了すると、キューに入れられたすべてのasynctaskの実行を完了しない限り、 –

+0

これらのことをあなたの質問にも追加する必要があります。あなたの質問を編集してください。 –

答えて

1

ボタンを7回連続して押すとします。したがって、7 AsyncTaskは、順番にキュー内で実行する必要があります。

アプリのターゲットに応じて、何も特別な処理をする必要はありません。最初に導入され、実行

Official documentation reads:

注文は、AsyncTasksは、単一のバックグラウンドスレッドで逐次 を実行しました。 DONUTからは がスレッドプールに変更され、複数のタスクが パラレルで動作するようになりました。ハニカム以降では、タスクを並列実行によって

の原因となった一般的なアプリケーションエラーを回避するために、単一の スレッドで実行されているので、アンドロイド3.0​​から開始することで、プラットフォームあなたの古代のバージョンをサポートしていない限り意味し、あなたが本当に必要とするすべてであります既定でシリアル実行が表示されるはずです。

また、順次実行されるIntentServiceを優先してAsyncTaskをドロップすることもできます。

+0

それは良いです。私の最小限のサポートはjellybeansです –

+0

私はそれをテストしました、一緒にすべてのaysnctaskを実行するように言いましょう私がボタンを2回クリックすると、私は彼らがハングアップし、より多くの時間がかかることを気づいた –

+0

'どのように測定したのですか?問題はAsyncTasksを1つずつ実行する方法でした。それに私は答えました。代わりに、提供されたソリューション(インテルIntentService)を管理する独自のキューを作成することが、あなたのニーズに合っていないことは何もありません。しかし、それは現在の質問の範囲外です。 –

関連する問題