1

START_STICKYアクティビティによって明示的に停止されるまで常に実行されている必要があり、何らかの問題 (フラグ)によって停止された場合でも再開する必要があるサービスが必要です。このサービスは、TimerTask. 私は次のコードで終わった。

public class SomeService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    TimerTask timerTask;
    final Handler handler = new Handler();
    Timer timer = new Timer();

    @Override
    public void onCreate() {
        // code to execute when the service is first created
        super.onCreate();
    }

    @Override
    public void onDestroy() {
        // code to execute when the service is shutting down
        super.onDestroy();
    }

    @Override
    public void onStart(Intent intent, int startid) {
        // code to execute when the service is starting up
        timerTask = new TimerTask() {
            public void run() {
                handler.post(new Runnable() {
                    public void run() {
                                   //KEEP RUNNING SOME ERRANDS HERE
                        }
                    }
                });
            }
        };
        timer.scheduleAtFixedRate(timerTask, 100L, 1700L);
    }

}

これを最適化して継続的に実行できる方法はありますか?

4

1 に答える 1

6

毎秒実行するのはかなり過剰に思えますが、AlarmManager を使用して IntentService をトリガーしない理由はありますか? 次に、システムはサービスを確実にトリガーする責任があります。信頼できる 1 秒のリトリガーを達成できるかどうかはわかりません。マークが他の回答で言及している理由については、悪い考えのようです。

于 2011-09-15T20:04:57.247 に答える