0

CRM ベースの Web サービスからデータを取得し、電話のデータベースに入れるサービスを作成しました。現在、このサービスは 3 時間ごとに実行する必要があるため、CRM と Android データベースの間でデータを同期できます。

このサービスを自動的に実行するために、アラーム マネージャーを使用して、Web サービス自体を "開始" します。

Intent intent = new Intent(ServiceClass.this, ServiceClass.class);
PendingIntent pintent = PendingIntent.getService(ServiceClass.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10800*1000, pintent);

このサービスは、再起動後に開始する必要があります。そのために、ここで説明する方法を使用しています..

自分が正しい道を進んでいるのか、間違いを犯しているのか、それとももっと良い方法があるのか​​知りたいだけです。私は Android をあまり扱ったことがなく、いくつかの指針が必要なだけです。ありがとう!

4

1 に答える 1

2

はい、あなたは正しい道を進んでいます。Alarm Manager は非常に信頼性が高く、特にこの目的のために使用されます。つまり、将来のタスク (繰り返しと非繰り返しの両方) をスケジュールするために使用されます。

@tyczj に同意します。 ServiceClass をIntentServiceとして定義する必要があります。IntentServiceは Service のサブクラスであり、バックグラウンドで実行され、特定のタスクを実行するように特別に設計されており、タスクが完了すると自分自身を強制終了しますデータのダウンロードとバックグラウンド同期に最適です。

実装も非常に簡単です。ほとんどの場合、1 つのメソッド (サービスの開始時に呼び出される onHandleIntent) をオーバーライドするだけで済みます。

再起動時にタスクを再スケジュールするには、その投稿で概説されている方法を使用します。お役に立てれば!

于 2013-10-25T21:13:20.207 に答える