1

午前0時、午前8時、午後16時に実行したい機能があります。(8時間ごと)。

どうすればこれを達成できますか?

私はいくつかのグーグルと検索を行いましたが、解決策が見つかりません。

次のコードを試してみましたが、うまくいきません。助けてください。ありがとう。

        try {
        date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse("2013/02/13 16:00:00");

        TimerTask updateProfile = new Controller(context);

        timer.scheduleAtFixedRate(updateProfile, date, 28800); //28800second == 8 hour

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

3 に答える 3

0

& RND overService, AlarmManager, PendingIntent & Intentとそれらの作品の組み合わせを使用してみてください。

于 2013-02-14T07:51:05.167 に答える
0

AlarmManager クラスを使用して、特定の時間にタスクをスケジュールできます。alarammager、android docsの例がたくさんあります。

于 2013-02-14T07:51:15.290 に答える
0

1) 期間はミリ秒単位である必要があります。8 時間 = 28800000

2) Locale.ENGLISH は違いはありません。混乱を避けるために削除してください。

3) 開始日が過去の場合、タイマーを開始すると、スキップされたすべてのスケジュールが実行されます。したくない場合は、 TimerTask.scheduledExecutionTime() が過去のものではないことを確認してください。

        public void run() {
            // truncate time to hours
            long t1 = System.currentTimeMillis() / 3600000 * 3600000;
            long t2 = scheduledExecutionTime() / 3600000 * 3600000;
            if (t2 >= t1) {
                ...
            }
于 2013-02-14T07:55:22.850 に答える