android - Intentservice 不调用 runnable

标签 android accelerometer runnable intentservice

我在 Intent 服务中有以下代码(我必须使用 Intent 服务)

//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() 返回,IntentService 将关闭并消失。因此,您不能在 IntentService 中注册监听器、派生线程、使用实现不佳的计时系统等。

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

关于android - Intentservice 不调用 runnable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465523/

相关文章:

Java 线程停止通知程序

android - EditText textAllCaps 不适用于 textIsSelectable

java - 在我使用 Google Play 服务版本 9.0.83 进行的路线跟踪 Activity 中, map 上没有显示标记

android - 以编程方式设置 PinEntryEditText 限制

python - 如何将两个时间序列与间隙和不同的时基相关联?

android - 检测向下加速度,特别是电梯

android - SQLite 删除一行

java - 需要应用程序检测来回摇动,目前仅检测单个摇动 Action

java - 多线程矩阵乘法

java - 当我在单独的线程(实现 Runnable)上运行该类时,为什么会得到 "android.os.NetworkOnMainThreadException"?