我建议您在这里查看我对类似问题的回答:Service v/s AsyncTask。
就个人而言,我会使用一个简单Handler
的任务来发布一个以特定时间间隔运行的任务。
例子:
private Handler mHandler = new Handler();
private void startTimer(Runnable Task, long delay) {
mHandler.removeCallbacks(Task);
mHandler.postDelayed(Task, delay);
}
private void stopTimer(Runnable Task) {
mHandler.removeCallbacks(Task);
}
private Runnable registerListeners = new Runnable() {
public void run() {
startTimer(registerListeners, 10*60*1000); //register to run again in 10 minutes
startTimer(unregisterListeners, 5*1000); //to unregister in 5 seconds
//here register your listeners
}
};
private Runnable unregisterListeners = new Runnable() {
public void run() {
//here unregister your listeners
}
};
当您要开始收听过程时:
//To start you listeners
startTimer(registerListeners, 0);
当你想停止一切时:
//To stop registering/unregistering listeners
stopTimer(registerListeners);
注意:如果您在侦听器中执行长时间运行的代码,那么您应该查看我上面给出的链接中的答案。
问候。