Android 知识体系




一、性能优化
	1、布局优化
		减少层次,view数量,ReleativeLayout和LinearLayout(weight)选择,viewstub,merge,include
	2、代码优化
		a、防止内存泄露(使用弱引用代替)
		b、性能检测工具(DDMS,MAT,TracceView,HeryLayout)
		c、bitmap,采样压缩,尽量使用drawable,使用弱引用缓存
		d、效率优化 比如HashMap遍历可以采用迭代器
		
	3、网络优化
		a、使用gzip压缩,json代替xml,减少请求次数
		
		
二、安全机制
	1、代码混淆,对抗dex2jar(特殊代码块是jd-gui工具无法查看)
	2、对抗动态调试
		2.1、在配置文件加入debuggable=true让程序不可调试,在代码中进行判断,杀死进程
		2.2、检测模拟器  检测checkqemu的值是否为1,正常手机没有。、
	3、防止重新编译
		3.1、检测软件签名,获取signatures字段的值的hash
		3.2、校验保护,可对dex的md5,hash,crc进行校验,每次编译crc都会改变。
	4、加壳保护
	
		Util类通过MyClassLoader完成对加密classes.jar的动态加载,内存中解密classes.jar,完成动态加载。
		jni方法对应so函数名的混淆,在JNI_OnLoad方法中手动注册jni方法,不易查找对应关系。
		抗动态调试: 当使用IDA动态调试该程序时,程序无法建立连接调试。
	5、权限机制
		5.1、每一个应用程序运行有一个uid,gid,使应用程序直接隔离,不能访问。如果要访问,通过androidapi,或者shareUserId
		5.2、权限分为普通、危险、签名和系统签名级别,
		5.3、组件权限:为组件设定权限,要启动就要有权限。
	
三、基础
	3.1、源码角度分析
		a、view的绘制流程,viewgroup事件传递流程
		b、handler机制,looper,message,消息队列,HandlerThread(保证looper和handler同步,ThreadLocal相当于Map<threadId,Looper>)
		c、
		
	3.2、Fragment汇总
		a、fragment之间数据传递
		b、startActivityForResult接收不到数据
		
	3.3、屏幕适配
		多使用weight,创建多个不同的布局文件(平板和手机双面板布局),Google百分比布局
		
	3.4 Activity解析机制
		intent-filter(凡是指定的都必须有,action->data->categroy)
	3.5、打包流程
	
		
四、第三方框架/架构
	4.1、插件化机制
		a、替换getResource,通过AssetManager反射addAssetPath执行dex中的方法 。 addAssetPath.invoke(assetManager, dexPath); 通过assetManager创建出Resources。
		b、重写getResources()方法,【Activity->ContextWrapper->Context(抽象类,实现者ContextImpl)】,替换其值。
		c、使用代理的模式去管理activity声明周期。
	4.2、ImageLoader框架
		 a、bitmap强引用
		 
	4.3、Xutils框架
		a、BitMapUtils
		
		b、ViewUtils
		
	4.4、GreenDao
		
	4.5、MVC,MVP,MVVM架构
	
	4.6、EventBus框架
	
	
五、java
	5.1、内存模型
		a、堆和栈
		
		b、如何停止线程:使用标志字段,但对于阻塞线程(sleep)不起作用。可以调用线程interrupt方法,阻塞线程会抛出interruptException,在结合volatile关键字修饰字段可以解决。
		c、volatile对所有线程具有可见性,一个线程对其修改,其他线程可以获取修改的值。
		d、
	5.2、java和android虚拟机原理
	
	5.3、多线程并发
		synchronized,lock锁(需要手动释放锁),信号灯Semaphore
	 
	5.4、网络编程
	
六、设计模式
	单例,
	模板方法,
	适配器,
	观察者,
	工厂方法,
	代理模式
	
七、数据结构
	
	
	
	
	
	
	

### Android 知识体系 #### 核心概念 Android 是一种基于 Linux 的操作系统,主要用于移动设备。其核心组件包括应用程序框架、库集以及运行环境。开发者可以利用这些资源创建功能丰富的应用。Activity、Service、Broadcast Receiver 和 Content Provider 构成了四大基本组件[^1]。 - **Activity**: 表示单一屏幕上的操作。 - **Service**: 在后台执行长时间运行的操作。 - **Broadcast Receiver**: 响应来自其他应用或系统的广播消息。 - **Content Provider**: 实现跨程序的数据共享机制。 #### 技术栈 构建高效稳定的 Android 应用涉及多个层次的技术: - **编程语言**:Java 和 Kotlin 是官方支持的主要开发语言;Kotlin 更加现代化并得到 Google 推荐作为首选语言。 - **UI 设计工具和技术** - XML 文件用于定义布局结构。 - Jetpack Compose 提供声明式的 UI 编程模型,简化界面设计流程[^2]。 - **数据存储解决方案** - SQLite 数据库适用于本地持久化需求。 - Room 持久层库提供更便捷的方式访问数据库,并处理线程管理等问题。 - **网络通信协议和支持类库** - Retrofit 或 OkHttp 可帮助实现 RESTful API 请求和服务端交互。 - WebSocket 协议允许建立全双工连接进行实时通讯。 - **性能优化技巧** - 使用 ProGuard 进行代码混淆减少 APK 大小。 - Profiler 工具辅助分析内存泄漏和 CPU/GPU 性能瓶颈。 #### 学习路径 对于初学者来说,建议按照以下顺序逐步深入掌握 Android 开发技能: 1. 安装配置好集成开发环境 (IDE),如 Android Studio; 2. 阅读官方文档熟悉基础语法与常用控件; 3. 练习编写简单的 Demo 来巩固理论知识; 4. 关注最新版本特性更新及时调整项目架构; 5. 加入社区交流分享经验共同进步成长。 ```kotlin // 创建一个新的 Activity 类继承自 AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 设置点击事件监听器给按钮 findViewById<Button>(R.id.myButton).setOnClickListener { Toast.makeText(this@MainActivity, "Hello World!", Toast.LENGTH_SHORT).show() } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值