0

時間間隔でいくつかのタスクを実行したいAndroidサービスがあります.スケジューラを使用することを選択しました.サービスの作成メソッドでスケジューラを実装しました.ただし、スケジューラメソッド内のコードは実行されません.ここに私の実装があります.,どこが間違っていますか?

    public void onCreate() {
    super.onCreate();

    Toast.makeText(this, "Share Service created...", Toast.LENGTH_LONG)
            .show();
    // getSharePrices();
    ScheduledExecutorService scheduler = Executors
            .newSingleThreadScheduledExecutor();

    scheduler.scheduleAtFixedRate(new Runnable() {
        public void run() {
            getSharePrices();
            checkWatchList();
            Log.i(tag, "Service created...");
            checkWatchList();
        }
    }, 5, 10, TimeUnit.SECONDS);

}

アプリケーション内からサービスを開始すると、問題なく実行されますが、ブロードキャスト レシーバーによる電話の起動後に開始すると、トースト メッセージが表示されるだけで、それ以上は何も表示されません。

4

2 に答える 2

0

これを試して:

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleWithFixedDelay(new Runnable() {
        public void run() {
            getSharePrices();
            checkWatchList();
            Log.i(tag, "Service created...");
            checkWatchList();
        }
    }, 5, 10, TimeUnit.SECONDS);

5 秒後に最初に実行し、さらに 10 秒ごとに実行します。

または、タイマークラスを使用できます

于 2013-09-12T08:15:22.173 に答える