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 回答