2012-04-23 22 views
3

私は少し問題があります...何か他のものよりも私はいくつかのヒントと例が必要です。 私は2つの文字列の比較を実行する必要があります、これらのうちの1つはデバイスの現在の日付、もう一つは私が書いた日付です。したがって、この比較はいつでも行うことができます。 この比較が真であれば、さまざまなコマンドを実行します。Android AlarmManagerサービス

私はループ1のサービスを呼び出し、このサービスでは、私が必要とする比較存在するAlarmManagerを作成しました。..

private static final int EXEC_INTERVAL = 10 * 1000; 

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); 
    pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); 

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.add(Calendar.SECOND, 10); 

      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), EXEC_INTERVAL, pendingIntent); 

私が必要なものを行うには良い方法は何ですか?

私はこれを使用しますか?またはBroadcastReceiverが必要ですか?

私はいくつかの例を与えることができれば非常に感謝しています..事前に感謝!

答えて

3

「MyAlarmService」で10秒ごとにテストを行っていますが、そうですか?

この場合、私の提案はAlarmManagerではなくHandlerを使用することです。アンドロイドのドキュメント(http://developer.android.com/reference/android/app/AlarmManager.html)によると、ハンドラを使用してタイミング操作を行う必要があります。

また、テストを実行するたびにサービスを開始する必要はありません。サービスはあなたが継続的に開始すべきものではなく、テストコードをループに入れたい場合があり、本当に必要なときにのみサービスを開始します。ハンドラの使用例については、チュートリアルがここにあり

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { /* comparison work */ }, EXEC_INTERVAL); 
+0

どうもありがとう、私はループをしても、デバイス場合に実行される必要があります:あなたは何をすべきhttp://www.vogella.com/articles/AndroidPerformance/article.html

ですスリープモードになります。 – Tony

+0

どういう意味ですか?テストコードをループに入れたいと思うかもしれませんか? – Tony