草庐IT

Android 无法在未调用 looper.prepare() 的线程内创建处理程序

我开始开发一个录制视频的Android应用程序,我需要每1分钟收集一次GPS位置publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//CreateaninstanceofCameramCamera=getCameraInstance();//CreateourPreviewviewandsetitasthecontentofouractivity.mPreview=newCameraPreview(this,mCame

android - 如果从主线程执行方法,如何抛出异常

我有一个具有多种方法的类,可以从sqlite数据库中提取数据。我想“强制”此类的用户在线程或异步任务中调用这些方法。如何阻止方法在主线程上运行?我想实现类似于当您尝试在ui线程上进行一些联网时抛出的android.os.NetworkOnMainThreadException的东西。 最佳答案 做类似的事情:if(Looper.myLooper()==Looper.getMainLooper()){thrownewDontDoThisOnUiThreadPleaseException();}来源:Looper.getMainLoop

java - 无法在未在警报对话框线程上调用 Looper.prepare() 的线程内创建处理程序

当它检查互联网连接并且没有互联网时,我的splashactivity出现了一个错误......它可能发生在我的警报对话框中。java.lang.RuntimeException:Can'tcreatehandlerinsidethreadthathasnotcalledLooper.prepare()atandroid.os.Handler.(Handler.java:200)atandroid.os.Handler.(Handler.java:114)atandroid.app.Dialog.(Dialog.java:108)atandroid.app.Dialog.(Dialog.

android - 在 Android 中使用 Looper.prepare() 的细节

我在理解如何使用Looperprepare()/loop()/quit时遇到了一些麻烦()逻辑。我有三个线程:一个是UI线程,一个是游戏逻辑线程,最后一个是网络通信线程(后台线程,仅在使用时存在)。游戏线程对网络调用的结果有很多依赖性,所以我想将网络线程从游戏线程中分离出来,并让Handler将结果发回。当然,由于不涉及UI线程,我需要在某处调用Looper.prepare()...。我认为它应该在游戏线程中调用,但我不能那样做,因为loop()接管了它。如何使用我的处理程序从网络线程发回游戏线程? 最佳答案 发生的事情是,一旦您在

安卓通知生成器 : How to setSound so that sound plays in a looper

我正在执行如下通知。默认警报声音播放正常,但只有一次。我想要的只是重复播放直到注册水龙头。NotificationCompat.BuildermBuilder=newNotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_launcher).setContentTitle("IAmFine").setStyle(newNotificationCompat.BigTextStyle().bigText(NOTIFICATION_MESSAGE)).setContentText(NOTIFICATION_MESSAGE).se

android - 了解 Android 中的 Looper 是什么

我必须将Looper添加到以下代码中:publicclassMyRunnableimplementsRunnable{@Overridepublicvoidrun(){Looper.prepare();finalLooperlooper=Looper.myLooper();newHandler().postDelayed(newRunnable(){@Overridepublicvoidrun(){try{}catch(Exceptionex){}finally{looper.quit();}}},100);Looper.loop();}}请注意,我在runnable中有一个runna

android - FusedLocationProviderClient 何时以及如何停止 Looper?

我曾经使用FusedLocationApi,直到我得知它已被弃用(请参阅下面的引用资料)。实现起来很简单。正如文档所说,您需要将它与GoogleApiClient结合使用LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,locationRequest,this);我最近更改为FusedLocationProviderClient(请参阅下面的引用资料)按照教程,我能够成功地让FusedLocationProviderClient工作教程:https://github.com/codepath

android - 如何安全退出 HandlerThread 的 looper

我有一个HandlerThread,每5秒我都会向其发送一个可运行的线程。像这样:HandlerThreadthread=newHandlerThread("MyThread");thread.start();Handlerhandler=newHandler(thread.getLooper());handler.post(newRunnable(){publicvoidrun(){//...handler.postDelayed(this,5000);}});我需要在某个时候退出looper,在60秒或类似的时间之后......所以我写:mainHandler=newHandler

android - 显示 Toast 消息时出错 : Can't create handler inside thread that has not called Looper. prepare()

我收到一个运行时异常:无法在工作线程中显示Toast消息时未调用Looper.prepare()的线程内创建处理程序。我有一个创建对象的服务(在远程进程中运行)。该对象负责在线程中连接到服务器。我从服务器得到响应。我想在toast中显示来自服务器的消息。那时我得到了这个异常(exception)。我尝试使用handler.post将其发布到Handler中。但我仍然遇到异常。应该采取什么方法来避免这种情况。 最佳答案 像这样定义一个处理程序:privatefinalHandlerhandler=newHandler(){public

android - A/循环器 : Could not create wake pipe. errno=24

我们正在构建一个可以制作大量动画并下载大量图像的应用。在一定数量的交易(可预测的数量)之后,应用程序崩溃并出现错误:A/Looper:Couldnotcreatewakepipe.errno=24我们不在代码中使用Looper,但我们使用的一些库确实使用了Looper:ActionBarSherlock:我不认为这是罪魁祸首facebook:我不认为这是罪魁祸首nineoldandroid:这个动画库可能是罪魁祸首Volley:这可能不是罪魁祸首picasso:这可能是罪魁祸首有没有人遇到过这些库中的Looper错误并且知道如何修复? 最佳答案