Android知识点

 

1基础

智能指针

(1)用来解决C++指针存在的问题,如没有初始化、忘记delete、野指针。(2)对象A指向对象B,B的引用计数器mCount会加1,当不引用时,会减1,如果刚好为零,则删除对象B。(3)强引用和弱引用的区别,弱引用必须先升级为强引用才可以访问指向的目标对象,弱引用的主要使命就是解决循环引用的问题。(4)通常目标对象的父类是 RefBase ,这个类可以同时进行强弱引用的控制。

binder 机制

参见:binder运行机制--从应用到原理再到实践

 

intent

Android中有四大组件来构成Android程序,Intent是Android程序中三大组件(活动,广播,服务)之间传递消息的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件间传递数据,(使用隐式Intent,不仅可以启动自己程序内的活动,而且还可以启动其他程序的活动)。Intent一般可被用于启动活动、启动服务以及发送广播等场景,这是Intent重要的几个用途。因此,Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
       例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)。为了实现这个目的,listActivity需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity (Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的 Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。

见:https://www.cnblogs.com/engine1984/p/4146621.htmlhttps://www.cnblogs.com/X-knight/p/5438042.html

 

序列化

Android序列化有两种:Serializable 和 Parcelable 

Serializable是Java的序列化方法,Parcelable是Android的序列化方法。前者代码量少(仅一句),将整个对象转换,I/O开销较大,一般用于输出到磁盘或网卡;后者使用起来比较麻烦,将整个对象进行分解,效率高,一般用户内存间序列化和反序列化传输。

推荐使用Parcelable方法。

 

屏幕的适配

两分钟理解Android中PX、DP、SP的区别

Android屏幕适配基本知识

 

 

 

 

2系统

线程

Android提供了四种常用的操作多线程的方式,分别是: 
1. Handler,见:理解Android的handler机制--从应用到原理再到实践
2. AsyncTask 
3. ThreadPoolExecutor 
4. IntentService    为了能够控制Service的生命周期,Android官方推荐的最佳解决方案就是使用IntentService,这种Service的最大特点就是当后台任务执行结束后会自动停止,从而极大程度上避免了Service内存泄漏的可能性。
详细介绍:https://www.jianshu.com/p/2b634a7c49ec

 

定时器

定时器有三种:

java 提供的 Timer类:不太适用那些需要长时间在后台运用的定时任务。原因是,Android手机在长时间不操作的情况下,CPU会自动进入睡眠状态,这有可能导致Timer中的定时任务无法正常执行。

Alarm机制:具有唤醒CPU的功能。

Doze模式:(1)在Android6.0系统中引入,为解决后台服务泛滥、手机电量消耗过快的问题。(2)在屏幕关闭一段时间后(且没有接通电源),就睡进入Doze模式。在Doze模式下,系统会CPU、网络等活动限制,但系统不是一直处于Doze模式,会间歇性的退出Doze模式一小段时间,此时去完成同步操作。

 

进程间通信

有以下几种:Bundle/Intent、共享文件、Messenger、AIDL、ContentProvider、Socket、Broadcast

https://blog.youkuaiyun.com/gs344937933/article/details/82938047

 

 

 

四大组件

分别为:Activity、BroadCast、Content Provider、Service

https://blog.youkuaiyun.com/gs344937933/article/details/82932958

 

六大布局

分别为:线性布局(LinearLayout)、框架布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout) 

https://blog.youkuaiyun.com/gs344937933/article/details/82934418

 

五大存储

分别为:SharedPreferences、文件存储、SqLite、Content provider、网络

https://blog.youkuaiyun.com/gs344937933/article/details/82934670

 

进阶

虚拟机

JVM、DVM(Dalvik VM)和ART虚拟机对比:

https://www.cnblogs.com/qitian1/p/6461541.html

https://blog.youkuaiyun.com/evan_man/article/details/52414390

 

Application启动流程分析:

https://www.jianshu.com/p/a5532ecc8377

 

内存优化

合理管理内存,https://blog.youkuaiyun.com/guolin_blog/article/details/42238627,该文章介绍在使用内存时,哪些方法可以减少内存

分析内存的使用情况,https://blog.youkuaiyun.com/guolin_blog/article/details/42238633,该文章介绍了DDMS、MAT工具分析内存泄漏

编码细小优化:https://blog.youkuaiyun.com/guolin_blog/article/details/42318689

加载图片优化,有两方法,一种是将大图片压缩后显示,一种是使用内存缓存技术,详见郭霖:https://blog.youkuaiyun.com/guolin_blog/article/details/9316683

LeakCanary  Android 和 Java 内存泄露检测。https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/

这篇文章更详细: http://hukai.me/android-performance-patterns-season-3/

 

布局优化

见:https://blog.youkuaiyun.com/guolin_blog/article/details/43376527

 

OOM

OOM(out of memory 内存溢出),见:https://www.jianshu.com/p/f5d8d3066b36

http://hukai.me/android-performance-oom/

 

ANR

在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。

见:https://www.jianshu.com/p/6d855e984b99

 

自定义View

https://blog.youkuaiyun.com/gs344937933/article/details/84262641

 

常用第三方库

图片加载:Glide: https://blog.youkuaiyun.com/column/details/15318.html, https://www.jianshu.com/p/3d699bf007c7

数据库框架:LitePal

网络通信库:OkHttp

OkHttp的加强版:retrofit:https://www.jianshu.com/p/0fda3132cf98

EventBus

Rxjava

 

网络编程

Android的网络编程是基于 java 的 socket 的,所以应该先学习 java 的 socket ,参见文章:Android网络编程之--Socket编程

 

设计模式

建造者模式和工厂模式的区别:https://www.cnblogs.com/ChinaHook/p/7471470.html

模板设计:https://blog.youkuaiyun.com/guolin_blog/article/details/8744002

单例模式:https://blog.youkuaiyun.com/guolin_blog/article/details/8860649

策略模式:https://blog.youkuaiyun.com/guolin_blog/article/details/8986285

组合模式:https://blog.youkuaiyun.com/guolin_blog/article/details/9153753

适配器模式:https://blog.youkuaiyun.com/guolin_blog/article/details/9400141

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值