1

AsyncTask一定の時間間隔が経過した後も実行し続ける を作成するにはどうすればよいですか。

たとえば。サーバーから 5 分ごとにデータを取得し、データを受信したことを呼び出し側スレッドに通知します。フォーラムで検索しましたが、あまり見つかりませんでした。私がこれまでに集めたものは、

1) UI スレッドが呼び出されますAsyncTask

2)onPrExecute実行前の UI スレッド アクセス用

3)OnPostExecute実行後の UI スレッド アクセス用

ユーザーに進行状況の更新を表示する必要はありません。また、アプリを閉じるとタスクが破棄されます。これに関するチュートリアルは役に立ちます

4

4 に答える 4

2

コメントで他の人が示唆したように。では、もっと詳しく説明しましょう。

AsyncTask を使用しないでください。代わりに IntentService のみを使用してください。

  1. クラスが IntentService を拡張するようにする
  2. Alarm Manager を使用して、特定のアクション アイテムで独自のサービスへのインテントをトリガーします
  3. このサービスをクライアントに通知するために使用するインターフェイスを定義します。
  4. クライアントによって提供されるこれらのインターフェイス実装オブジェクトのリストを維持します。
  5. onHandleIntent(Intent intent) で、アクションを確認して呼び出しを識別します。
  6. ワーカー スレッドを使用して機能するように、intentService でデータ フェッチ リクエストを直接開始し、最後に、維持したインターフェイス オブジェクト リストの update デリゲートを呼び出します。

  7. これらの更新をリッスンしないようにアクティビティを登録および登録解除するメソッドを作成します。

  8. 実際には、管理しているリストに提供されたインターフェイスの実装を追加し、 unregister が呼び出されたときにリストから削除します。
  9. アクティビティが onResume に登録され、onPause で登録解除されていることを確認してください。
  10. 繰り返しアラームを使用するか、1 回の操作実行の最後にアラームを再度開始します。私はそれが役立つことを願っています:)
于 2012-10-29T04:42:01.643 に答える
0

AsyncTaskアプリを閉じても持続することを除いて、定期的に sを起動するアプリを作成しました。とにかく、ここに私がしなければならなかったことがあります:

  1. アクションを含むをPendingIntent(経由でgetBroadcast())作成します。Intent
  2. PendingIntentシステムに を供給しAlarmManager、間隔を設定します。
  3. マニフェストでa を宣言して、no にBroadcastReceiver指定されたアクション文字列をキャッチします。Intent1.
  4. onReceive()メソッドで、BroadcastReceiverを起動しAsyncTaskます。
于 2012-10-29T05:08:43.647 に答える
0

Timer.scheduleAtFixedRateAsyncTaskを使用して、固定レートで繰り返すようにスケジュールできます。

于 2012-10-29T04:46:52.990 に答える
0

これを試して..

-これを何度も機能させるために使用Serviceすることをお勧めします。

- bind または unbound を使用できるようになりServiceました。サービスをアクティビティにバインドする場合は、バインドされたサービスを使用するか、バインドされていないサービスを使用します。

-IntentServiceここでは、タスクを実行し続ける必要はありませんが、一定の時間後に実行されるため、を使用する方がさらに良い場合。

このリンクを参照してください:

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

于 2012-10-29T04:55:52.993 に答える