草庐IT

android - Looper如何知道将消息发送给Handler?

问题是,我在哪里告诉我的Thread使用mHandler作为Looper?谢谢。我正在使用以下代码:classLooperThreadextendsThread{publicHandlermHandler;publicvoidrun(){Looper.prepare();mHandler=newHandler(){publicvoidhandleMessage(Messagemsg){//processincomingmessageshere}};Looper.loop();}} 最佳答案 Thequestionis,whereIt

android - 使用 RxJava 测试 Android Realm - "opened from a thread without a Looper"异常

我有以下代码,基于Realm(https://realm.io/docs/java/latest/#rxjava)提供的文档publicObservablegetFooById(Stringid){realm=Realm.getInstance(realmConfiguration);returnrealm.where(Foo.class).equalTo("id",id).findFirstAsync().asObservable().filter(this::filterResult);}这在App中按预期工作,但是当涉及到测试时,事情变得有点棘手。我有以下测试(为了简单起见进行了

android - 获取 java.lang.IllegalStateException : The current thread must have a looper

我收到此错误,我的应用程序崩溃了:java.lang.IllegalStateException:Thecurrentthreadmusthavealooper!我对如何在Google上使用looper了解不多,我正在使用线程(主要用于休眠功能)、处理程序(用于在异步任务运行时下载图像)和异步任务(用于从中获取JSON数据)网址)。我不知道如何解决这个问题,所以任何建议都会很有帮助。这是点击按钮时执行的线程代码:Viewview=flingContainer.getSelectedView();view.findViewById(R.id.item_swipe_right_indica

Android Looper 和调用栈

我想知道Looper类实际上是如何处理Looper附加到的Thread中的Runnables(通过Handler类)的?如果一个looper在它的messageQueue中循环,那么它肯定是那个线程的阻塞操作?我想它本身一定在执行一些线程技巧,但它如何将发布的Runnablesrun()方法添加到主机线程堆栈中?很多问题!任何帮助将非常感激。谢谢!编辑:通过Looper查看classfile我看到下面的类,这让我更加困惑,因为所有评论都提到了在主线程中运行的循环程序,而且它在等待MessageQueue上的新消息时也是一个阻塞操作。这怎么不阻塞UI/主线程???/***Runtheme

java - 尝试在空对象引用上调用虚拟方法 'android.os.Looper android.content.Context.getMainLooper()'

这个问题在这里已经有了答案:WhatisaNullPointerException,andhowdoIfixit?(12个答案)关闭5年前。每当我尝试在我的手机或模拟器上打开该应用程序时,我的Logcat中都会出现此错误。为了让您大致了解我目前正在做的项目,它是一个记录连接到手机接入点的设备数据的系统,可以通过屏幕上的按钮打开和关闭。我想归功于:Android2.3wifihotspotAPI和https://www.whitebyte.info/android/android-wifi-hotspot-manager-classLogcat文件的图像是:https://i.gyazo

Android:计划重复的 TimerTask 仅被触发一次

好吧,这是我遇到的一个非常奇怪的问题,我很确定我在某个地方搞砸了,但我不太清楚在哪里。我正在尝试的是-安排一个Timer每五​​秒执行一次TimerTaskTimerTask依次执行一个AsyncTask(在本例中,它简单地休眠了一秒钟,然后返回AsyncTask数量的静态计数)。最后,上述计数在UI中更新。当然,适当的Handler和Runnable已用于将来自其他线程的异步消息发布到UI。这段代码只执行一次。我希望它每5秒触发一次。这是代码。注意:我不知道如何使用Looper。经过反复试验,我把它放在那里了!publicclassTimerAsyncMixActivityexten

android - 如何在死线程警告中修复向处理程序发送空消息的问题?

我有一个线程使用处理程序和消息将数据发送到Activity。一切正常,除非Activity暂停:nullsendingmessagetoaHandleronadeadthreadjava.lang.RuntimeException:nullsendingmessagetoaHandleronadeadthreadatandroid.os.MessageQueue.enqueueMessage(MessageQueue.java:196)atandroid.os.Looper.quit(Looper.java:173)atpocket.net.ComD.stopConnection(Co

android - 无法创建线程中的 WebView

我有一些线程,我在其中创建了一些View并准备显示它们。其中我还有一个WebView。此代码在线程中执行:WebViewlGraphWebView=null;try{lGraphWebView=newWebView(AppController.getAppController());}catch(Exceptione){Log.d("info","error:"+e);}并抛出以下异常:java.lang.RuntimeException:Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()这有点奇怪,因为当我创建

android - 使用 Looper.getMainLooper() 初始化的处理程序不响应消息回调

我正在尝试实现Handlers监听来自不同线程的同一个Looper。下面我有两个处理程序,一个在主线程中创建,另一个在子线程中创建,但是它们都被初始化为监听MainLooper。privateHandlermMain;publicstaticfinalThreadPoolExecutortpe=(ThreadPoolExecutor)Executors.newCachedThreadPool();@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setCont

android - LocationManager:java.lang.RuntimeException:无法在尚未调用 Looper.prepare() 的线程内创建处理程序

我认为从另一个线程在UI线程上执行某些操作时通常会出错,但我不明白自己做错了什么。该错误似乎只在手机旅行时出现,因此GPS位置不断变化。我想存储最近的位置,所以UI上没有任何内容。我从主要Activity中调用了以下方法:publicvoidgetFreshDeviceLocation(longinterval,finallongmaxtime){if(gps_recorder_running){return;}gpsTimer=newTimer();//startslocationstartMillis=System.currentTimeMillis();//receiveupda