Intentservice 不调用 runnable

Intentservice doesn't call runnable

我在意图服务中有以下代码(我必须使用 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,不显示日志并且加速度计接收器未注销。

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

I have to use intentservice

你必须使用IntentService这个用例。

it doesn't call runnable, no log is shown and accelerometer receiver is not unregistered

一旦 onHandleIntent() returns,IntentService 就会关闭并消失。因此,您不能在 IntentService.

中注册侦听器、fork 线程、使用实施不佳的计时系统等。

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