0

アプリのスケジューラーを作成したい。私の現在のアイデアは、起動時に起動し、日付と時刻をリッスンするバックグラウンドサービスを作成することです。これにより、アプリケーションがトリガーされます。しかし、これは最も効率的な方法ではないと思います。私はかなり広範囲にグーグルで検索しましたが、何も変わりませんでした。サービスを作成するよりも効率的な方法はありますか?

[編集]

私の質問をより明確にします。こんなものを作りたいです。

毎週月曜日の午前10時にアプリを実行したいとします。どうすればよいですか?私が考案した方法またはより効率的な何か?

4

2 に答える 2

1

必要なのは、IntentServiceを開始するBroadcastReceiverと組み合わせたシステムのAlarmManagerです。

更新: 2回目の読み取りで、アプリケーションをトリガーするとはどういう意味ですか?非インタラクティブだと思っていましたが、インタラクティブであれば、BroadcastReceiverを使用してアクティビティを表示できます。その場合、IntentServiceは必要ありません。どちらの方法でも監視する時間を節約できます。

更新自分自身に尋ねなければならない中心的な質問の1つは、デバイスをウェイクアップして、{app、service}がその時点で正確に実行されるようにするか、それとも直後に実行してもよいかということです。 「別の月曜日の午前10時」が過ぎた場合、デバイスはユーザーによって起こされますか?

その質問への回答に関係なく、システムのAlarmManagerを使用して、またはのいずれか、およびsetRepeating()またはのいずれかを使用して繰り返しアラームを設定します。は次の月曜日の午前10時までの時間デルタであり、1週間のミリ秒数です。setInexactRepeating()RTCRTC_WAKEUPtriggerAtMillisintervalMillis

以上です。

于 2013-01-30T11:45:03.327 に答える
-1

コードのスケジュールを修正する必要があると思います。特定の機能をスケジュールするには、このコードを試してください。

 Timer mTimer = new Timer();
    TimerTask mTimerTask = new TimerTask() {
        @Override
        public void run() {
            /*your code here..*/
        }
    };
    mTimer.scheduleAtFixedRate(mTimerTask, getTomorrowMorning2AM(), 1000*60*60*24);

}
private static java.util.Date getTomorrowMorning2AM(){
    Calendar c = Calendar.getInstance();
    java.util.Date date2am =  c.getTime(); 
       date2am.setHours(2); 
       date2am.setMinutes(0); 

       return date2am;
  }
于 2013-01-30T12:04:43.677 に答える