![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 多线程
文章平均质量分 62
一个学渣的自我救赎
这个作者很懒,什么都没留下…
展开
-
Android13 Looper Looper流程分析
上面方法主要处理如下:1、 Message msg = me.mQueue.next():调用Message的目标Handler的dispatchMessage方法,将Message分发到Handler中2、msg.target.dispatchMessage(msg):调用Message的目标Handler的dispatchMessage方法,将Message分发到Handler中3、msg.recycleUnchecked():回收可能正在使用的 Message。原创 2024-05-02 21:13:41 · 245 阅读 · 0 评论 -
Android13 Looper prepare流程分析
上面方法的主要处理如下:1、通过new的方式创建NativeMessageQueue对象。2、调用nativeMessageQueue的incStrong方法。原创 2024-05-02 21:07:55 · 284 阅读 · 0 评论 -
Android13 Handler sendMessage流程分析
2、调用Message的setAsynchronous方法,设置消息是否为异步消息。1、调用ThreadLocalWorkSource的getUid方法,取得Uid。2、如果ThreadLowcalMap不为空就调用其set方法,设置与键关联的值。3、调用MessageQueue的enqueueMessage方法。1、获取当前线程对应的ThreadLocalMap。3、如果ThreadLocalMap为空就创建一个。原创 2024-05-02 21:03:53 · 351 阅读 · 0 评论 -
Android13 Handler post流程分析
上面的主要处理如下:1、调用Handler的getPostMessage方法,通过Runnable获取对应的Message。2、调用Handler的sendMessageDelayed方法,发送这个Message。原创 2024-05-02 20:55:10 · 178 阅读 · 0 评论 -
Android13 Handler创建流程分析
这个方法终于没有标记为过时,我们可以通过new Handler(Looper.myLooper()){@Override public void handleMessage(@NonNull Message msg){}};来调用这个构造方法。在构造方法中将looper、mQueue、mCallback存储到Handler中。原创 2024-05-02 20:51:40 · 102 阅读 · 0 评论 -
Android13 Message创建流程分析
Message的创建方法有如下三种:1、通过 Handler实例获取,Message message = myHandler.obtainMessage();2、通过 Message获取,Message message = Message.obtain();3、直接创建新的Message实例Message message = new Message();原创 2024-05-02 20:49:00 · 294 阅读 · 0 评论 -
Android Handler
Android Handler是一种事件驱动模型,用于实现线程切换或执行延时任务。它在整个Android开发体系中占据着很重要的地位,可以用于保证多个任务在执行时的有序性。在Android系统中,主线程有特殊地位,因此像EventBus和Retrofit这类并非Android独有的第三方库,都是通过Handler来实现对Android系统的特殊平台支持。Android Handler的主要作用是将消息(Message)或Runnable对象发送到主线程的消息队列中,以便在主线程中执行。原创 2024-05-02 20:43:14 · 652 阅读 · 0 评论 -
Android 13 HandlerThread run流程分析
【代码】Android 13 HandlerThread run流程分析。原创 2024-05-02 20:28:27 · 241 阅读 · 0 评论 -
Android13 HandlerThread 创建流程
HandlerThread是Google帮我们封装好的,可以用来执行多个耗时操作,而不需要多次开启线程,里面是采用Handler和Looper实现的。原创 2024-05-02 20:26:27 · 201 阅读 · 0 评论 -
Android13 Thread run流程分析
调用Runnable的run方法,Runnable是个接口,因此会调用实现接口类的run方法。原创 2024-05-02 20:22:44 · 16 阅读 · 0 评论 -
Android13 Thread start流程分析
原型:int pthread_create((pthread_t thread, pthread_attr_t *attr, void *(start_routine)(void *), void *arg)输入参数:thread:线程标识符;attr:线程属性设置;start_routine:线程函数的起始地址;pthread_create是pthread库中的函数,通过syscall再调用到clone来请求内核创建线程。功能:创建线程,并调用线程起始地址所指向的函数start_routine。原创 2024-05-02 20:21:32 · 209 阅读 · 0 评论 -
Android Thread
Android中的线程机制是通过Thread类和Handler类实现的。Thread类用于创建和管理线程,而Handler类用于在不同线程之间传递和处理消息。在Android中,主线程(也称为UI线程)负责处理用户界面的更新和事件响应。为了避免在主线程中执行耗时操作导致界面卡顿,我们可以创建新的线程来执行这些操作。Android提供了Thread类来创建和管理线程。我们可以通过继承Thread类或实现Runnable接口来创建自定义的线程。在创建线程后,我们可以使用Handler类来与主线程进行通信。原创 2024-05-02 20:18:47 · 667 阅读 · 0 评论 -
Android线程
Android中的线程机制是通过Thread类和Handler类实现的。Thread类用于创建和管理线程,而Handler类用于在不同线程之间传递和处理消息。原创 2024-05-02 20:02:25 · 562 阅读 · 0 评论 -
Android 多线程——Handler的基本使用
我们创建了Handler类的子类MyHandler,并重写了handlerMessage方法,这个方法是当使用接收处理发送的消息的。然后我们创建了一个子线程,在子线程中我们使用MyHandler的对象调用sendEmptyMessage方法发送了一个空的Message。这个泄露是因为 Message 会持有 Handler,而又因为 Java 的特性,内部类会持有外部类,使得 Activity 会被 Handler 持有,这样最终就导致 Activity 泄露。//直接创建新的 Message 实例。原创 2024-05-02 16:33:01 · 322 阅读 · 0 评论 -
Android 多线程——线程安全/线程同步
单一程序中每次只能做一件事情,它是串行执行的;但多线程程序是可以异步并发处理同一件事情,这样就会发生两个线程抢占资源的问题,使如一个线程正在写数据,而另一个线程刚才在读数据,那么就会产生很多未知的错误情况出现,这也是多线程最危险的事情。原创 2024-05-02 16:22:09 · 128 阅读 · 0 评论 -
Android 多线程——线程和线程状态
但如果线程正在sleep()或wait()中,便无法使用类成员变量来判断,此时可以使用interrup()方法离开run()方法,同时结束线程,但程序会抛出InterruptedException异常。使用sleep()方法时,必须加入InterruptedException异常捕捉,使用sleep()方法的会使线程进入睡觉状态,也就是上面提到的阻塞状态,接收的参数是毫秒,在设定的毫秒时间内醒来后,它并不能保证能进入运行状态,只能保证它进入就绪状态。但sleep方法是纯粹使线程休眠等待,而且并不会释放锁。原创 2024-05-02 16:15:55 · 30 阅读 · 0 评论