android - 无法在主线程中创建处理程序?

标签 android handler

用户在执行下面的代码时在他们的电话上遇到错误,我在运行 AsyncTask 进行 Web 服务调用之前检查用户当前是否正在通话.我这样做的原因是因为有些人在通话时会失去互联网连接,所以我每 5 秒检查一次,看看他们是否在通话。如果不是,则调用 AsyncTask

do{
        Handler handler = new Handler();
        handler.postDelayed(new Runnable(){

            @Override
            public void run() {

                 onCall = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE))
                        .getCallState() != TelephonyManager.CALL_STATE_IDLE;
                 if(!onCall){
                     new CallRegWS().execute();
                 }  
            }
        },5000);
    }while(onCall);

我没有完整的堆栈跟踪,只有这个显示了错误

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

显然没有太大帮助,但这就是我必须继续的。他们不断收到该错误,因此在我创建处理程序时一定会发生。

所有这些都是在 main thread 中完成的,所以我不知道问题出在哪里,有什么办法可以解决这个问题吗?

更新 这是从服务调用的,该方法在单独的类中

最佳答案

尝试 Handler handler = new Handler(Looper.getMainLooper());

此外,请参阅有关此错误的帖子:http://levinotik.com/loopers-handlers-runtimeexceptions-explained/

关于android - 无法在主线程中创建处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040627/

相关文章:

java - 在 libgdx 中处理多点触控

Android:具有多个 UI Activity (多线程/处理程序)的蓝牙 SPP 应用程序的一般方向

c# - Web API - 405 - 请求的资源不支持 http 方法 'PUT'

java - GWT - 从小部件获取按钮的 "addClickHandler"

android - 我可以要求 Zygote 以 root 身份运行我的应用程序吗?

android - 错误 : constructor ModuleRegistryAdapter in class ModuleRegistryAdapter cannot be applied to given types, 新 ModuleRegistryAdapter()

android - 如何在用户执行任何操作时关闭 Snackbar?

android - 在 android 中使用处理程序和 postDelayed 暂停

android - 在 LooperThread 中获取处理程序返回 null

android - Google Play 服务和 MobileFirst 7.0 应用程序