美文网首页
Android Framework学习之Framework用到的

Android Framework学习之Framework用到的

作者: 一只二凡子 | 来源:发表于2023-01-08 13:13 被阅读0次

怎么同步处理消息?

这个服务可以是应用自己的服务,也可以是系统服务,请求都会调到binder线程池里,binder线程将请求转到工作线程里去处理,工作线程在处理这个请求的过程中,这个binder线程一直在那等着。应用端也一直等着返回结果。

在工作线程处理请求的原因:binder线程不想上锁,因为IPC调用是在binder线程池里,涉及到多线程同步的问题。倒出上锁很麻烦。

Framework有哪些同步处理消息的场景

应用端向SurfaceFlinger发起创建surface请求,native层

应用端向SurfaceFlinger发起创建surface请求,java层

DEMO工程,测试同步处理消息

同步处理消息有几种处理方式:

    1. 反射调用Handler的runWithSissors方法

不要在UI线程调用这个方法,这个方法可能会把UI线程挂起,这个方法不能拿到返回结果

2. BlockingRunnable

        可以得到result

    3. 

        FutureTask;实现了Runnable和Future,可以得到处理结果

动态代理怎么统一切换工作线程?

setName方法是运行在binder线程里,

现在要统一把setName方法切换到别的线程

通过动态代理生成mServiceImpl对象,他其实是RemoteServiceImpl的动态代理,这个动态代理的作用:虽然mServiceImpl.setName(name)运行在binder线程,但RemoteServiceImpl的接口比如setName,是运行在UI线程的

相关文章

网友评论

      本文标题:Android Framework学习之Framework用到的

      本文链接:https://www.haomeiwen.com/subject/kqghqdtx.html