2

内部にこのようなループを含む Async タスクを作成することをお勧めしますか?

while (true) { 
check queue and request API

アクティビティを待つ必要があり、サービスが APi と通信する必要があるためです。

ありがとう

4

2 に答える 2

0

API への重要な呼び出しを最初に選択するために、優先キューがあります。

私のプログラムには2つのサービスがあります:

  • メッセージがキューに追加されると、API が呼び出されます。API の呼び出しは、Asinc タスクによって次のように行われます。

    messages.add(request);  
    new DownloadApiTask().execute();
    
  • 他のサービスがローカル データベースを更新しています。そのために、API からデータを取得するために最初のサービスを呼び出すループがあります。基本的な構造は次のとおりです。

    while iアップロードするデータがある

    mFirstService.putMessage(リクエスト)。

問題は、X 呼び出しごとに拒否された実行例外があることです。メッセージを受け取るたびに asinc タスクを呼び出すことが原因である可能性があると思います。

そのために、実行する代わりにキューをチェックする asinck タスクに強制的に考えていました。

私の問題を理解していただければ幸いです。

ありがとう

于 2010-02-27T00:39:48.400 に答える
0

「キュー」は Java キュー、おそらくLinkedBlockingQueue. その場合、そのキューは不要でAsyncTaskあり、スレッド プールと一緒に使用するキューもあります。

では、問題は次のとおりです。キューに入るトリガーは何ですか?

トリガーがユーザー イベント (メニューの選択、ボタンの押下など) である場合は、単に を起動させるAsyncTaskか、または をService起動させAsyncTaskます。その作業はシステムによってキューに入れられAsyncTaskます。

トリガーが時間の経過である場合 (たとえば、外部サーバーを 10 分ごとにチェックしたい場合)、 と をからにAlarmManager切り替えることを検討します。AsyncTaskServiceIntentService

于 2010-02-27T00:17:59.063 に答える