Intentservice不会调用runnable

时间:2015-05-26 17:52:20

标签: android accelerometer runnable intentservice

我在意向服务中有以下代码(我必须使用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,没有显示日志,加速度计接收器也没有注册。

我不知道为什么会这样。有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

  

我必须使用intentservice

对于此用例,您必须使用IntentService

  

它没有调用runnable,没有显示日志,加速度计接收器未注册

onHandleIntent()返回后,IntentService会关闭并消失。因此,您无法在IntentService中注册侦听器,fork线程,使用实现不佳的计时系统等。

欢迎您使用Service。将postDelayed()内容转换为ScheduledExecutorService(因此您的工作在后台线程中完成),并确保在适当的位置调用stopSelf()以关闭服务。