我在意向服务中有以下代码(我必须使用intentservice)
//TIME HANDLER
Log.i("start", "start getting data acc & gps");
//Register listeners and start getting data
//
// ACC:
onStartAcc();
//
handle_lower.postDelayed(new Runnable() {
@Override
public void run() {
Log.i("stop getting data", "STOP");
//Stop listeners
//
// ACC:
onStopAcc();
//==========================================================================
//HERE IS CALCULATING STATUS
//
status.calculateState();
//==========================================================================
}
}, Constants.TIME_ACCELEROMETER_GETTING);
并且它没有调用runnable,没有显示日志,加速度计接收器也没有注册。
我不知道为什么会这样。有人能帮助我吗?
答案 0 :(得分:2)
我必须使用intentservice
对于此用例,您必须不使用IntentService
。
它没有调用runnable,没有显示日志,加速度计接收器未注册
onHandleIntent()
返回后,IntentService
会关闭并消失。因此,您无法在IntentService
中注册侦听器,fork线程,使用实现不佳的计时系统等。
欢迎您使用Service
。将postDelayed()
内容转换为ScheduledExecutorService
(因此您的工作在后台线程中完成),并确保在适当的位置调用stopSelf()
以关闭服务。