如何正确使用(在子线程中) Looper 和 Handler 
   网上关于 Looper 解析相关的文章非常多, Handler 的使用相信所有做Android开发的都熟的不能再熟了, 那么本文存在的意义还有什么呢? 当然我不会介绍什么 Looper Handler 消息机制。    要理解以下内容首先需要能够正常使用Handler, 以及了解 Looper 机制, 首先说下Loope            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-26 22:13:06
                            
                                184阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Handler:是一个消息分发对象,进行发送和处理消息,并且其 Runnable 对象与一个线程的 MessageQueue 关联。作用:调度消息,将一个任务切换到某个指定的线程中去执行。为什么需要 Handler?子线程不允许访问 UI假若子线程允许访问 UI,则在多线程并发访问情况下,会使得 UI 控件处于不可预期的状态。传统解决办法:加锁,但会使得UI访问逻辑变的复杂,其次降低 UI 访问的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-16 23:14:09
                            
                                132阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # Android子线程使用Handler实现
## 引言
在Android开发中,我们经常需要在子线程中处理一些耗时操作,然后将结果返回到主线程进行UI更新。这时,使用Handler机制就非常方便了。本文将介绍如何在Android中使用Handler来实现子线程与主线程之间的通信。
## 整体流程
下面是整个使用Handler实现子线程与主线程通信的流程:
```mermaid
state            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-01-03 05:56:26
                            
                                155阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 在子线程可以刷新 UI 吗  不行,在子线程中报异常ViewRootImpl$CalledFromWErongThreadException提示 Only the original thread that created a view hierarchy can touch its views 中文翻译为只有在创建视图层次的原始线程才能更改其视图。通过源            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-24 13:44:33
                            
                                303阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Android的UI访问是没有加锁的,这样在多个线程访问UI是不安全的。所以Android中规定只能在UI线程中访问UI。 但是有没有极端的情况?使得我们在子线程中访问UI也可以使程序跑起来呢?接下来我们用一个例子去证实一下。 新建一个工程,activity_main.xml布局如下所示:   <?xml version="1.0" encoding="utf-8"?>
<R            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-10 20:49:48
                            
                                18阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Android中子线程和UI线程之间通信的详细解释 1.在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?下面详解一下。 2.首先在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。 3.Handler: (1).概念:  Handler是沟通Act            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-16 13:35:09
                            
                                81阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Android 中线程可分为主线程和子线程两类,其中主线程也就是UI线程,它的主要这作用就是运行四大组件、处理界面交互。子线程则主要是处理耗时任务,也是我们要重点分析的。首先 Java 中的各种线程在 Android 里是通用的,Android 特有的线程形态也是基于 Java 的实现的,所以有必要先简单的了解下 Java 中的线程,本文主要包括以下内容:Thread、RunnableCallab            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-30 19:45:05
                            
                                74阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Android系统是单线程模型,更新UI的操作只能在主线程内操作,并且如果在主线程内进行耗时操作容易造成应用程序无响应(ANR)。 一般的解决办法是:在主线程中开启子线程,子线程来进行耗时操作。 由于在Android中只能由主线程来更新UI,因此耗时操作产生结果后,子线程应该通知主线程进行相应的UI更新。 主(父)线程和子线程,以及子线程之间需要进行数据交换等通信,这个任务在Android中是交给            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-05 14:19:03
                            
                                0阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.什么是handler?Handler是Android SDK来处理异步消息的核心类。  子线程与主线程通过Handler来进行通信。子线程可以通过Handler来通知主线程进行UI更新。2.什么是MessageQueue和Looper 如图MessageQueue用来保存子线程从Handler所发送未处理的消息,Looper依次取出MessageQueue中的消息传递给主线程响应处理。3.为什            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-14 11:35:58
                            
                                42阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            线程1、线程的概念: 线程是程序最基本的运行单位,而进程不能运行,所以能运行的,是进程中的线程。2、线程是如何创建起来的: 进程仅仅是一个容器,包含了线程运行中所需要的数据结构等信息。一个进程创建时,操作系统会创建一个线程,这就是主线程,而其他的从线程,却要主线程的代码来创建,也就是由程序员来创建。主线程线程和子线程什么是子线程? 包含在 Thread thread = new Thread( )            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-22 19:11:41
                            
                                54阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            子线程启动第一种public class ThreadB implements Runnable {
    @Override
    public void run() {
    }
}
//mainactivity里
        new Thread(new ThreadB()).start();子线程启动第二种new Thread(new Runnable() {            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-30 22:19:12
                            
                                37阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             1.使用全局变量(窗体不适用)     实现线程间通信的方法有很多,常用的主要是通过全局变量、自定义消息和事件对象等来实现的。其中又以对全局变量的使用最为简洁。该方法将全局变量作为线程监视的对象,并通过在主线程对此变量值的改变而实现对子线程的控制。     由于这里的全局变量需要在使用它的线程之外对其值进行            
                
         
            
            
            
            零点一、写在前面在Android中,关于UI的管理是在主线程中进行的。但我们经常遇到需要在子线程中更新UI的情况,所以可以使用Handler与Message来完成。一、Handler与MessageHandler在主线程中,负责处理消息,Message可以在子线程中发送消息。所以子线程中更新UI的思路就是:在子线程中发送Message,由Handler接受处理,而Handler在主线程中,所以            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-05 16:27:00
                            
                                49阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            消息机制,对于Android开发者来说,应该是非常熟悉。对于处理有着大量交互的场景,采用消息机制,是再好不过了。有些特殊的场景,比如我们都知道,在Android开发中,子线程不能更新UI,而主线程又不能进行耗时操作,一种常用的处理方法就是,在子线程中进行耗时操作,完成之后发送消息,通知主线程更新UI。或者使用异步任务,异步任务的实质也是对消息机制的封装。关于子线程到底能不能更新UI这个问题,之前看            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-28 23:41:07
                            
                                60阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            问题一:Android能否在子线程中更新UI?Android在子线程中更新UI的方法汇总(共七种)Android可不可以在子线程中更新UI?在某些情况下是可以在子线程中更新UI的! 如:在一个activity的xml文件中中随便写一个TextView文本控件,然后在Activity的onCreate方法中开启一个子线程并在该子线程的run方法中更新TextView文本控件,你会发现根本没有任何问题            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-16 19:21:46
                            
                                225阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Android 4.4 中 WebView 使用注意事项自Android 4.4起,Android中的WebView开始基于Chromium( 这大概是因为Android部门负责人从Andy Rubin变成了Chrome部门的主管Sundar Pichai了吧,^_^)。这个改变,使得WebView的性能大幅度提升,并且对HTML5, CSS3, and JavaScript有了更好的支持。那么,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-14 11:50:03
                            
                                60阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在子线程中直接更新一个view,比如设置一个textView的文字new Thread(new Runnable() {
            @Override
            public void run() {
                textView.setText("我是子线程中的view");
            }
        }).start();一般情            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-14 12:47:32
                            
                                234阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            MessageMessage中一些常见的参数与APIpublic final class Message implements Parcelable{
    public int what; // 消息的id
    public int arg1; // 整数参数1
    public int arg2; // 整数参数2
    public Object obj; // 任意类型参数            
                
         
            
            
            
            最近项目需求,要做以下gif效果:方法1:使用开源得gif控件,加载gif图片方法2:view平移动画方法3:继承view,activity中线程刷新方法4:继承LinearLayout,添加子控件,activity中线程刷新由于没有合适的gif图片,又不想在activity中书写太多的动画逻辑,考虑采用采用方法3和方法4封装控件的方法。本人采用的方法4,感觉比较简单,不用计算绘制onDraw,直            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-19 22:21:23
                            
                                28阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              
   
       我们知道在Android中,要更新UI只能在UI主线程去更新,而不允许在子线程直接去操作UI,但是很多时候,很多耗时的工作都交给子线程去实现,当子线程执行完这些耗时的工作后,我们希望去修改UI,但Android中又不允许在子线程中去直接修改UI,如:在子线程中执行从服务器下载一张图片的任务,下载完成后,希望这张图片显示一个Image            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-26 22:14:37
                            
                                123阅读
                            
                                                                             
                 
                
                                
                    