草庐IT

HandlerThread

全部标签

android - HandlerThread 中的 NullPointerException

这个错误让我困惑了几个小时。我收到了NullPointerException。问题是这个错误不一致。它在我启动应用程序时发生,但只是偶尔发生。所以我不确定是什么原因造成的。对于错误日志中的冗长问题,我深表歉意,但我找不到另一种提问方式。错误日志如下:FATALEXCEPTION:mainProcess:com.myproject.android,PID:22175java.lang.NullPointerExceptionatcom.myproject.android.ImageDownloaderThread.queueImage(ImageDownloaderThread.java

java - 使用多个 AsyncTask 或 HandlerThread(Pipeline Thread) 哪个更好?

在应用程序中使用一个HandlerThread来执行不同的耗时操作(例如,排序或什至可能用于处理网络/文件流)是否是一种好方法?什么更好用于此类目的:多个AsyncTask、多个Thread或一个HandlerThread,例如http://hi-android.info/src/android/webkit/WebViewWorker.java.html? 最佳答案 您必须将耗时的操作(网络、数据库访问等)委托(delegate)给某种类型的工作线程。阻塞主(UI)线程是NotAcceptable。AsyncTask是一个高级对象

android - requestLocationUpdates() 在单独的线程中

我需要将requestLocationUpdates()放在一个单独的线程中,以免它阻塞我应用程序的其余部分(它将在大部分时间运行)。最好的方法是什么? 最佳答案 当您调用requestLocationUpdates()时,这仅表示您希望在用户位置更改时被回调。此调用不会花费大量时间,并且可以在主线程上进行。当用户的位置发生变化时(并根据您传递给requestLocationUpdates()的条件),您的监听器将通过onLocationChanged()回调或通过通知>Intent(取决于您传递给requestLocationUp

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 - 如何使用循环器创建后台线程

有人可以分享带有Looper的后台线程的实现,我可以将其传递给subscribeOn(AndroidScheduler.from(/backgroundThreadWithLooper/))。我需要这个,因为我正在尝试实现一个DBService类,该类在后台运行其所有操作,同时仍然获取实时对象更新。因此,当我应用addChangeListener时,会抛出异常:java.lang.IllegalStateException:YourRealmisopenedfromathreadwithoutaLooper.AsyncqueriesneedaHandlertosendresultsof

android - 如何终止 HandlerThreads?

按照Google使用服务的示例,我创建了几个这样的线程。我不能使用IntentService,因为我正在做一些涉及等待回调的事情。但是,我不知道如何终止以这种方式启动的线程。据我了解,线程会在run()方法返回时自动终止。但是,这种线程没有运行方法。我的线程正在泄漏——它们在stopSelf()之后仍然存在。@OverridepublicvoidonCreate(){HandlerThreadthread=newHandlerThread("ServiceStartArguments",android.os.Process.THREAD_PRIORITY_BACKGROUND);thr

android - 有必要退出一个 HandlerThread 吗?

我的应用程序使用HandlerThread进行一些在需要在后台线程上运行的组件之间共享的操作。大部分时间该线程将处于等待状态。我能否让这个HandlerThread在我的应用程序中运行(等待),在必要时向它发送消息,但从不通过HandlerThread.getLooper().quit()退出它>?这可能意味着此HandlerThread将继续以等待状态存在,即使在我的所有应用程序组件都已被销毁后也是如此。起初,这对我来说似乎是一个很大的拒绝——我绝对不想做的事情——但我现在不确定了。当Android终止我的进程时,就像它在需要释放CPU时间或内存时所做的那样,它会与我的UI线程一起结

android - 这是停止处理程序线程的完美方法吗?

我总是创建两个处理程序:一个在主线程上包装,另一个在单个线程上包装。这是在Activity生命周期中启动和停止它们的最佳方法吗?HandlerThreadsafeThread=null;HandlersafeHandler=null;Handlerhandler=null;@OverridepublicvoidonStart(){if(safeThread==null){safeThread=newHandlerThread("safeThread");safeThread.start();safeHandler=newHandler(safeThread.getLooper());}

android - HandlerThread vs Executor - 什么时候比另一个更合适?

我只是好奇在某些时候我应该选择Executor而不是HandlerThread。是否有时一个优于另一个,或者我真的应该坚持使用HandlerThread?就我而言,我目前正在监听ServerSocket的连接,并在Executor创建的单独线程上处理每个请求。尽管我举了一个具体的例子,但我真的只是在寻找一种比另一种更合适的情况。不过,我欢迎对我的设计发表评论。 最佳答案 Executor类更强大,可以使用线程池,而每个Handler引用单个线程。Executor允许您获取所有计划任务并根据需要取消它们。另一方面,处理程序不会回答简单

android - HandlerThread vs Executor - 什么时候比另一个更合适?

我只是好奇在某些时候我应该选择Executor而不是HandlerThread。是否有时一个优于另一个,或者我真的应该坚持使用HandlerThread?就我而言,我目前正在监听ServerSocket的连接,并在Executor创建的单独线程上处理每个请求。尽管我举了一个具体的例子,但我真的只是在寻找一种比另一种更合适的情况。不过,我欢迎对我的设计发表评论。 最佳答案 Executor类更强大,可以使用线程池,而每个Handler引用单个线程。Executor允许您获取所有计划任务并根据需要取消它们。另一方面,处理程序不会回答简单