3.quit()方法和quitSafely()方法 3.1用途 这两个方法的用途其实都是终止looper的, 因为每次创建一个HandlerThread对象, 调用run()方法, 就会创建一个Looper对象, 而Looper是一个死循环, 这样会消耗大量的资源, 所以正确的操作方式为, 当界面销毁的时候, 调用quit()方法或者quitSafely()方法, 将Looper停止掉 3.2...
HandlerThread默认的优先级较低,开发者可以通过设置更高的线程优先级,来确保其任务能更快地被调度执行。例如,可以在启动HandlerThread后,通过Process类将线程的优先级设置为后台线程中的较高级别。 HandlerThread handlerThread = new HandlerThread("BackgroundThread", Process.THREAD_PRIORITY_MORE_FAVORABLE); handlerThread...
quitSafely方法效率比quit方法标率低一点,但是安全。具体选择哪种就要看具体项目了。 总结: 1.HandlerThread适用于构建循环线程。 2.在创建Handler作为HandlerThread线程消息执行者的时候必须调用start方法之后,因为创建Handler需要的 Looper参数是从HandlerThread类中获得,而Looper对象的赋值又是在HandlerThread的run方法中创建。
使用HandlerThread 除了普通的Handler,我们还可以使用HandlerThread来处理后台任务。HandlerThread是一个特殊的线程,允许我们创建一个Handler,在该线程中运行任务。 HandlerThreadhandlerThread=newHandlerThread("HandlerThread");handlerThread.start();HandlerthreadHandler=newHandler(handlerThread.getLooper());threadHandler.post(new...
HandlerThread.QuitSafely Method We use optional cookies to improve your experience on our websites, such as through social media connections, and to display personalized advertising based on your online activity. If you reject optional cookies, only cookies necessary to provide you the services will ...
publicbooleanquitSafely() { Looper looper = getLooper(); if(looper !=null) { looper.quitSafely(); returntrue; } returnfalse; } quit和quitSafely都是退出HandlerThread的消息循环。其分别调用Looper的quit和quitSafely方法。 quit方法会将消息队列中的所有消息移除(延迟消息和非延迟消息)。
通过调用HandlerThread的构造函数并传入一个字符串作为线程名创建HandlerThread实例。 复制 publicHandlerThread(String name){ super(name);mPriority=Process.THREAD_PRIORITY_DEFAULT;} 1. 2. 3. 4. HandlerThread继承于Thread,本质上是一个线程,其构造方法主要是做一些初始化的操作。
HandlerThread继承自Thread,内部实现了初始化了Looper,并创建了消息队列,接着调用了Looper.loop()开启了消息循环,这样HandlerThread就可以处理通过Handler传递过来的Message了,因为HandlerThread中的run方法是无限循环,当有消息过来时处理消息,没有消息时就会阻塞。当明确不需要HandlerThread时,可以调用quit或者quitSafely (API ...
privateLooper(booleanquitAllowed){mQueue=newMessageQueue(quitAllowed);mThread=Thread.currentThread();} Looper.prepare()为当前线程创建Looper。接着通过Looper.loop()来开启消息循环。 HandlerThread是已经带有Looper的线程。在run方法里边也会也是通过此方法创建并开启循环。
这样就保证了Hnadler运行在子线程。并且需要在适合的时机调用HandlerThread的quit方法或quitSafely方法,如Activity销毁的时候: @OverrideprotectedvoidonDestroy() {//super.onDestroy();//释放资源mHandlerThread.quit(); } AI代码助手复制代码 quit()与quitSafely()方法比较(这里只说一些结论,源码可以自己查看): ...