
Android进阶
文章平均质量分 92
jxq1994
你若不离不弃,我必同归于尽
欢迎关注简书:https://www.jianshu.com/u/b8d2aee8cd4c
新的内容将在简书更新
展开
-
Binder与 四大组件工作原理 Service、BroadCastReceiver、ContentProvider
你会发现,这段代码和前面介绍的handleLaunchActivity差不多,都是从PMS中取出包的信息packageInfo,这是一个LoadedApk对象,然后获取它的classloader,反射出来一个类的对象,在这里反射的是Service。对,Receiver的插件化解决方案,就是这个思路。你也许会问,都在一个进程,App内部直接使用Binder对象不就好了,其实吧,要考虑不在一个进程的场景,代码又不能写两份,两套逻辑,所以就都放在一起了,即使在同一个进程,也要绕着AMS走一圈。原创 2023-04-27 17:30:59 · 841 阅读 · 0 评论 -
Binder 与 四大组件工作原理 其一
ApplicationThread(APT)接收到来自AMS的消息后,调用AcctivityThread的sendMessage方法,向Launcher的主线程消息队列发送PAUSE_ACTIVITY消息,发送消息是通过一个名为H的Handler类完成的,AMS给Activity发送的所有消息,以及给其他三大组件发送的消息,都是经过H类,既然都经过这条路,我们就可以从这里做插件化技术。启动新进程,就是启动一个新的app,为这个进程创建ActivityThread对象,这就是我们熟悉的UI主线程。原创 2023-04-27 16:39:31 · 806 阅读 · 0 评论 -
Binder连接池
如何使用AIDL在上面的一节中已经进行了介绍,这里在回顾一下大致流程:首先创建一个Service和一个AIDL接口,接着创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法,在Service的onBind方法中返回这个类的对象,然后客户端就可以绑定服务端Service,建立连接后就可以访问远程服务端的方法了。上述过程就是典型的AIDL的使用流程。现在考虑一种情况;公司的项目越来越庞大了,现在有10个不同的业务模块都需要使用AIDL来进行进程间通信,那我们该怎么处理呢?原创 2022-11-11 10:20:34 · 363 阅读 · 0 评论 -
IPC中的AIDL机制(二)
在了解了AIDL的流程及基本原理之后,我们还需要对AIDL有进一步的了解。在上一篇的例子的基础之上,我们考虑另一种情况:假设有一种需求:用户不想时不时地去查询图书列表了,太累了,于是,他去问图书馆,“当有新书时能不能把书的信息告诉我呢?”。大家应该明白了,这就是一种典型的观察者模式,每个感兴趣的用户都观察新书,当新书到的时候,图书馆就通知每一个对这本书感兴趣的用户,这种模式在实际开发中用得很多,下面我们就来模拟这种情形。原创 2022-11-10 20:52:41 · 970 阅读 · 0 评论 -
IPC中的AIDL机制
IPC是的缩写,含义是进程间通信或者跨进程通信,是指两个进程间进行数据交互的一个过程。IPC不是Andrord中所独有的,任何一个操作系统都需要有相应的IPC机制,比如Windows上可以通过剪贴板、管道和邮槽等来进行进程间通信,、Linux上可以通过命名管道,共享内容、信号量等来进行进程间通信。可以看到不同的操作系统系统有着不同的进程通信方式。对于Android来说,它是一种基于Linux内核的操作系统,他的进程间通信方式并不能完全继承自Linux,相反,它有自己的进程间通信方式。原创 2022-11-10 18:46:57 · 1052 阅读 · 0 评论