3

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

ループ 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が必要ですか?

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

4

1 に答える 1

3

私の知る限り、あなたは「MyAlarmService」で10秒ごとに時間通りにテストを行っていますね。

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

また、テストを実行するたびにサービスを開始する必要がない場合もあります。サービスは継続的に開始する必要があるものではありません。テストコードをループに入れて、本当に必要な場合にのみサービスを開始することをお勧めします。

ハンドラーの使用例については、ここにチュートリアルがあります:http ://www.vogella.com/articles/AndroidPerformance/article.html

あなたがすべきことは:

Handler handler = new Handler();
handler.postDelayed(new Runnable() { /* comparison work */ }, EXEC_INTERVAL);
于 2012-04-23T00:39:35.500 に答える