转载: Android Framework面试题

本文深入探讨了Android系统的关键组成部分,包括JVM、Dalvik、ART的差异与联系,Binder机制的工作原理,系统级与第三方应用的区别,以及系统启动流程等。通过详细解释,帮助读者理解Android系统的内部运作。
摘要由CSDN通过智能技术生成

                                                                              Framework 面试题答案

Android

基础

1JVM、Dalvik和ART是什么以及他们的关系
 

ART 就是 Android Runtime ,是安卓4.4之后的系统的新的虚拟机模式,改模式提升了运行效率,启用该模式之后,系统在安装APP的时候,会进行一次预编译,把代码转成机器语言存储在本地,这样运行的时候效率就高了。

       Dalvik 是一种安卓系统在上面运行的虚拟机,因为安卓系统是以Linux 为底层构建的,为了更加高效的适配到各种不同的硬件设备上面,就创建了这个Dalvik 虚拟机,该虚拟机可以将程序的语言由java转成机器语言二进制运行,然而每次开启运用的时候都会执行一次编译,所以效率不是很高,所以我们需要ART,增加效率。

        JVM 是 java虚拟机,是实现java夸平台的主要方式,可以使得java这样的高级语言编译成机器可以识别的机器语言,这样使得java 一次编译,到处运行

 

https://blog.csdn.net/qq_25804863/article/details/48696619

2Binder机制
 Binder机制 是一种进程间通信机制,提供了远程过程调用功能,就是RPC。他把系统的一系列组件连接在了一起,这些组件分别是上层的 Client 和server,中间层的 Service Manager,该组件 ;底层的 Binder驱动程序,系统的核心组件。开发者只要实现要client和server就可以了
3

系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app目录的权限有什么不同

 统级app分成两种,一种在system/priva-app 一种在system/app,如果是修改多的还可能在sytem/vendor/app 。用户级的在data/app下面
4android系统的启动流程
 https://blog.csdn.net/qq_25804863/article/details/48669547
5android中UID和PID的作用及区别
 

PID是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在android系统中一般不会把已经kill掉的进程ID重新分配给新的进程,新产生进程的进程号,一般比产生之前所有的进程号都要大.

UID在linux中就是用户的ID,表明是哪个用户运行了这个程序,主要用于权限的管理.而在android 中又有所不同,因为android为单用户系统,这时UID 便被赋予了新的使命,数据共享,为了实现数据共享,android为每个应用几乎都分配了不同的UID,不像传统的linux,每个用户相同就为之分配相同的UID.

如果让其他的开发者知道了我们的shareUserId,那我们的数据不是暴露了?

其实我们要使不同的程序能够相互访问,还需要拥有相

6android系统的低电耗模式(Doze模式)是怎么工作的
 https://blog.csdn.net/qq_25804863/article/details/50229437
7android最近几个版本的系统差异或特性
 https://blog.csdn.net/qq_25804863/article/details/83348760
 8 例举一下Android系统级服务,在App层一般都用过哪些?如何实现一个自定义的系统级服务?渐进式的问题,后边的有难度,如果没有Framework定制经验或没有研读过系统源码真的不好回答了。
  

PackageMangerService APP安装有关的service 
        WindowMangerService 是APP 调用窗口有关的service
        SensorMangerService 与传感器有观点 service 
            。。。。。 还有很多

        自定义的系统服务,这个比较复杂。必须在安卓启动的时候,在ServiceManager里面进行注册,在framework/base.增加JNI ,在kernel层增加对应的C++文件,当然要在build配置好各种编译MK文件,然后全编,这样就可以在App中调用了。实际中,不会太多增加系统服务的工作。

  如何限制第三方应用安装?
  是在PMS里面修改的,如果不是系统级的APP,广播返回空。
  Launcher的实现。
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值