5

質問:1=> 毎日午前9時から午後4時までサービスを実行したい。私は2つの方法を計画していますが、どちらが最適ですか?

方法1: 内部サービス:(このサービスは、最初のアプリケーション開始時のアクティビティの作成時に初期化されます)

if (9 AM <=current time<=4 PM)
{
  fetch data from server. 
}

方法2:

アクティビティoncreateで、アラームマネージャを使用し、アラームマネージャに基づいてサービスを開始します。その後、翌日目を覚ましてサービスを開始します。

どちらの方法が最適ですか?

質問:2 =>サービスが実行されているか、プログラムで実行されていないかを確認するにはどうすればよいですか?

4

1 に答える 1

1

ON_BOOTブロードキャストを受信するBroadcastRecieverを作成します(マニフェストに適切なアクセス許可とインテントフィルターを追加する必要があります)。BroadcastReceiverは、AlarmManagerで午前9時の通知を作成するためにのみ存在します。スケジュールされたアラームには、サービスを起動するPendingIntentがあります。明らかに、24時間ごとに繰り返すようにアラームを設定します。

起動すると、サービスは午後4時まで正常に実行され、午後4時に停止します。

サービスのonStartCommand()メソッドは、適切なフラグを返して、システムがクラッシュまたは強制終了された場合にシステムを再起動させる必要があります。

私が理解できない唯一のことは、サービスを最初にインストールしたときにサービスを自動開始する方法です。デバイスが再起動するのを待つことはあまり実用的ではありません。私がこのようなアプリを作成するとき、それらは通常、サービスを開始および停止するためのコントロールを持つアクティビティと組み合わされます。

于 2012-11-17T04:53:24.000 に答える