0

私はこの基本的なチュートリアルに従っています: http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/

ご覧のとおり、基本的には次のことを行います(間違っている場合は修正してください):

  • MainActivity が起動されると、特定の日時にアラームが設定されます。
  • この日時になるとすぐに、MyReceiver.class

最初の停止。MyReceiver伸びてBroadcastReceiverいます。通常のアクティビティへのインテントを開始することは可能ですか?

  • BroadcastReceiver は、通知を表示するだけの Service を開く新しい Intent をトリガーするだけです。

2 番目の停止。: 前と同じ: BroadcastReceiver、サービスであるインテントのみを起動できますか? それとも、通常の活動を開始できますか? 新しいインテントを呼び出す必要があるのはなぜですか? BroadcastReceiver でジョブを実行できないのはなぜですか (インターネット経由でコンテンツをダウンロードするなど)。

私はサービスについて少し新しいので、非常に奇妙なことを言って申し訳ありません。

どうもありがとう。

4

3 に答える 3

1

BroadcastReceiver でジョブを実行できないのはなぜですか (インターネット経由でコンテンツをダウンロードするなど)。

Android ドキュメント ブロードキャスト レシーバー onReceive メソッドはメイン スレッドで呼び出されるため、onReceive でダウンロード タスクを実行できません。UI がフリーズし、バージョン 3.0 以降では例外がスローされる可能性があるためです。

ダウンロードを実行する場合、最善の策は onReceive 内で IntentService をトリガーすることです (デフォルトでは IntentService はバックグラウンド スレッドで実行されます)。

于 2013-09-26T19:52:28.747 に答える