2

RSS フィードを取得して SQLiteDatabase に保存する Service に AsyncTask があります。サービスはメインのアクティビティから開始されます。RSSフィードを取得するには、4時間ごとにAsyncTaskを実行する必要があります。以下のように TimerTask を使用してみましたが、うまくいかないようです。バックグラウンド タスクは 1 回だけ実行されます。このシナリオ/代替手段を最適に実装する方法についてのアイデアはありますか?

public class FeedReader extends Service{

    private void getFeedsRegularly() {
        timer.scheduleAtFixedRate(new TimerTask() {

        @Override
        public void run() {
        handler.post(new Runnable() {

        @Override
        public void run() {
            new BgTask().execute(feedURL);

        }
            });
            }
    }, 0, UPDATE_INTERVAL);
    }

    private class BgTask extends AsyncTask<...> 
    {...}
}
4

1 に答える 1

2

このような設定されたスケジュールには、AlarmManagerを使用する必要があります。これを使用して、アプリを 4 時間ごとに実行するように設定できます。

これは便利なだけでなく、4 時間ごとに AsyncTask を実行するだけで、アプリがバックグラウンドで継続的に実行されないため、バッテリーのパフォーマンスも向上します。代わりに、適切なタイミングで Android がアプリを実行し、ユーザーは作業を行ってから、アラームが再び鳴るのを待ちます。

于 2012-09-22T06:30:45.610 に答える