码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 面试之腾讯


    一面:(30min)

    1、内存泄露怎么排查
    2、handle机制
    3、两个activity怎么通信

    4、进程间怎么通信

      • 4、安卓间进程通信机制
        • 前言:
        • 1、Android多进程开发:
        • 2、跨进程通信方式(IPC)
          • 1、管道
          • 2、消息队列:
          • 3、信号:
          • 4、共享内存:
          • 5、信号量:
          • 6、套接字:
        • 3、Android跨进程通信核心
          • Binder:
        • 4、Android跨进程通信方式:
          • 1.AIDL:
          • 2.Messager:
        • 5、AIDL项目实战
          • 解决问题:
          • 项目场景
            • 连接服务:
            • 消息服务:
          • 代码:
          • 一些其他的参考,还在整理

    5、JNI
    6、SDK
    7、nativate
    8、产品如何上架

    4、安卓间进程通信机制

    前言:

    1、Android实现跨进程通信 慕课网实战 https://www.imooc.com/learn/1195
    Binder、AIDL、Messenger的技术背景、应用场景和底层实现
    Android IPC通信实战之AIDL
    Android IPC通信实战之Messenger
    Android IPC通信实战之Messenger
    2、代码:
    在自己的github仓中
    3、学习点:
    Android多进程开发的应用以及注意点
    Android中跨进程通信的主要方式以及Binder机制的底层实现
    AIDL Messenger的实现原理(oneway、in、out、inout)

    1、Android多进程开发:

    Why:
    系统资源紧张(OOM)
    应用架构臃肿(Webview、推送、后台任务)
    监听保活
    Different:
    Application生命周期会再次执行(onCreate)
    数据共享失效(对象、单例、回调)
    进程间通信(文件、Intent、AIDL)

    2、跨进程通信方式(IPC)

    进程是系统分配的最小单位,进程间通过内核提供的机制完成数据交换,称之为进程间通信(IPC,Inter process Communication)
    Linux跨进程通信方式:六种

    1、管道

    管道:亲缘进程、半双工、大小为1页=4KB
    匿名管道:父子进程或者兄弟进程之间
    有名管道:基于缓冲区进行实现,从头开始读,写入末尾、数据只能一个方向流动,双方通信需要两个管道,用于轻量级的通信。

    2、消息队列:

    存放在内核中的消息链表,多进程读写、随机查询;
    有消息标识符,只有在内核重启或者删除下才消失。

    3、信号:

    内核存储发送,对于中断机制的模拟。
    Linux系统中用于进程间相互通信和操作的一种机制,在任何时候发送给某个进程,无需知道另外一个进程的状态,若当前进程处于未执行状态,信号则被内核保存起来,内核进程可执行后,内核才把可执行的存储发送出去,信号是软件层次上对中断的模拟。

    4、共享内存:

    效率最高,需要同步。
    IPC中效率最高的机制,多个进程直接读区同一块内存空间,内核中有专门的内存去,可以由需要访问的进程将其映射到自己的私有地址空间,不用拷贝,可提高效率,但由于多个进程读取同一块内存,需要同步机制(信号量)。

    5、信号量:

    计数器、进程间同步,PV操作。
    计数器、用于多进程对共享数据的访问进行控制,意图:进程间同步,信号量增减是原子操作,由内核实现。

    6、套接字:

    c/s结构,跨网络通信。
    不同计算机或者相同计算机之间的通信。

    3、Android跨进程通信核心

    Binder:

    C/S架构、稳定性好,(不需要考虑进程间同步的问题,)优于共享内存方式
    性能较好:数据拷贝次数只有一次,优于管道、消息队列、Socket
    安全性高:UID/PID可见

    在这里插入图片描述
    在这里插入图片描述

    4、Android跨进程通信方式:

    AIDL(基于Binder)
    Intent、Messager、ContentProvider(基于AIDL)
    文件共享

    1.AIDL:

    定义IPC过程中接口的一种描述语言;
    A IDL文件在编译过程中生成接口的实现类,用于IPC通信;
    支持基本数据类型,实现Parcelable接口的对象,包括List、Map;

    2.Messager:

    基于Handler、Message实现;
    串行实时通信;
    传送Bundle支持的数据类型

    5、AIDL项目实战

    解决问题:

    1. AIDL实现IPC
    2. in、out、inout关键字的作用
    3. oneway关键字的作用
    4. AIDL如何实现callback
    5. 如何自己i编码实现AIDL的核心功能

    项目场景

    连接服务:

    connect
    disconnect
    isConnected

    消息服务:

    sendMessage
    registerMessageReceiverListener
    unRegisterMessageReceiverListener

    代码:

    github的My Application的com.Demo.Service.AidlIpc中
    慕课网实战
    请添加图片描述
    请添加图片描述

    一些其他的参考,还在整理

    请添加图片描述
    请添加图片描述
    请添加图片描述

    安卓接口定义语言参考:https://blog.csdn.net/lentolove/article/details/120145230

  • 相关阅读:
    python基础语法:数字类型(下篇)
    【初认Redis】
    猿如意|手把手教你下载、安装和配置PyCharm社区版
    《论文阅读》MOJITALK: Generating Emotional Responses at Scale
    三相PWM整流器滞环电流控制MATLAB仿真模型
    SAP-SD26-设定销售收入科目
    MyBatis工作原理
    OpenHarmony 入门——搭建OpenHarmony本地应用开发环境
    功能基础篇4——Python数学计算,数字、分数、数学库、随机数、统计
    计算机中丢失mfc140u.dll怎么解决
  • 原文地址:https://blog.csdn.net/qq_34358193/article/details/126294137
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号