0

私がやろうとしているのは、ユーザーが設定した定期的にメール アカウントにログインし、受信トレイと送信済みアイテムの両方をチェックするアプリを作成することです。

いくつかのクエリがあるので、長さのためにこれが無視されないことを願っています。

  1. 電話の起動が完了しBroadcastReceiverた後に を起動する必要があると思います。AlarmManager
  2. AsyncTaskメインの UI スレッドからメールを読む必要があります。ただし、Service別のスレッドでも実行されますか?
  3. PendingIntentの中からAlarmManager(なぜこれPendingIntentが正常ではないのIntentですか?) または を選択する必要がありますgetBroadcast()getService()?
  4. プロセス全体の私の理解は次のとおりです。
    • 電話が起動を終了し、ブロードキャストを開始します
    • BroadcastReceiverイベントを取得して設定するAlarmManager
    • AlarmManagerIntent特定の時間に発火
    • BroadcastReceiverイベントを取得します
    • BroadcastReceiver始まるService
    • Service始まるAsyncTask

そうですか?それは非常に長い道のりのようです。as のgetService()代わりに選択した場合、上記の手順で 2 番目のブロードキャストの呼び出しをスキップして、そのまま?getBroadcast()PendingIntentService

これを再読すると、特定の質問をしていないと思いますが、私の理解が正しいかどうか、または完全に迷っているかどうかを知りたいです (私はそう感じます!)

更新:アラームマネージャーから直接呼び出すことができるので、良い音のするインテントサービスを使用すると思います。ただし、周りを読んでみると、サービスが十分長く起動していない可能性があるため、ウェイクロックを使用するにはとにかくブロードキャストレシーバーを使用する必要がある可能性があります。これについては現在さらに調査中です。

Commonsware は WakefulIntentService と呼ばれる便利なラッパーを作成しました。これを使用して、独自のウェイク ロックを行うことができます。

4

2 に答える 2

0

すべての答えを持っているわけではありませんが、私が知っていることをお話しします。

3.PendingIntent待機中のインテントであり、違いは、このインテントは、通常のインテントのようにすぐに送信されるのではなく、将来送信されることを意図していることです。

サービスが AsyncTask を開始します

サービスを開始する必要はありませんAsyncTask。別のスレッドで常に実行されるサービスをバックグラウンドで実行するか、いずれかを実行します。またはAsyncTask、スレッドを作成し、そのジョブを実行し、最後にスレッドを強制終了する を使用できます。

于 2013-03-06T00:49:28.393 に答える