Android
文章平均质量分 53
杨殿生
这个作者很懒,什么都没留下…
展开
-
动态代理
原文地址:https://www.jianshu.com/p/46d5c64e0459代理代理,就是找个人代替你做你该做的事,分为静态代理和动态代理,一个一个说准备工作我们先假设一种场景,打游戏,我们创建一个游戏人物去打游戏,让一个代理帮我们打游戏1,建立一个游戏人物的抽象类public interface GamePlayer { void login(String ...原创 2019-01-16 14:44:54 · 143 阅读 · 0 评论 -
网络的五层划分是什么?TCP和UDP的区别是什么?简述TCP的三次握手过程
网络的五层划分是什么?从下往上数,物理层,数据链路层,网络成(IP),传输成(TCP/UDP),应用层(HTTP)TCP和UDP的区别是什么?TCP是安全的链接,有三次握手四次挥手保证数据准确传输,这么安全那肯定会消耗一些性能,存储一下额外的数据用于保证数据的安全,适用于下载UCP是尽量交付,他可能会丢包,优点就是因为不需要很多校验所以传输的数据会比TCP少,适用于视频一类的数据要求没那么严格的场...原创 2018-06-03 17:18:09 · 588 阅读 · 0 评论 -
Android线程池有哪些?他们的区别是什么?为什么要使用线程池?
Android线程池有哪些?他们的区别?Android线程池都是机遇ThreadPoolExecutor实现的分为以下四种,都是通过Executors静态工厂创建出来的FixedThreadPool 可以设置固定核心线程数,没有非核心线程 底层实现是LinkedBlockingQueue CashedThreadPool 没有核心线程数,可以创建非核心线程,有超时限制 底层实现是Synchrono...原创 2018-05-27 10:05:53 · 600 阅读 · 0 评论 -
Android四大组件中每个组件的作用是什么?它们都可以开启多进程吗?
ActivityActivity可以开启多进程android:process用于显示页面与用户交互,四大组件中唯一一个用户可感知的组件,1,生命周期开启方式通过startActivity,正常的生命周期为 onCreate onStart onResume onPause onStop onDestroyonCreate和onDestroy是根据页面创建和销毁划分的onStart和onStop是根...原创 2018-05-08 10:21:59 · 1770 阅读 · 0 评论 -
Android开发艺术探索读书笔记
前言 Android开发艺术(这本书真的是艺术,太崇拜刚哥了,值得每一个做Android开发刷十遍的书)1,Activity生命周期和启动模式典型情况下的生命周期分析onCreate() onStart() onResume() onPause() onStop() onDestroy() onRestart()异常情况下的生命周期分析屏幕旋转onSaveInstanceState() onRes...原创 2018-05-07 20:55:37 · 336 阅读 · 0 评论 -
Android框架揭秘读书笔记
Android启动过程1.linux内核,加载linux内核2 init 进程对各种设备进行初始化,执行Daemon进程,管理USB、ADB链接管理器、Debugger系统、rild管理无线通信链接Content Manager进程,提供运行Android各种系统服务信息Media ServerZygote进程用于缩短Android应用程序加载时间,每当Java应用程序时,Zygote就会派生出一...原创 2018-05-15 17:32:06 · 1694 阅读 · 0 评论 -
RxJava
背压控制ApiRxJava线程切换原理原创 2018-05-03 17:43:07 · 148 阅读 · 0 评论 -
关于优化的问题编程需注意事项
内存泄漏1,Handler使用静态或者弱引用,原因:Message中存在Handler引用,而Handler如果是非静态内部类那么他是持有外部类Activity引用的,当Activity finish掉如果MessageQueue中还是Message那么Activity中的引用是不会被释放的,所以造成了内存泄漏...原创 2018-04-23 09:47:43 · 254 阅读 · 0 评论 -
多线程在Android中应用
AsyncTask 如何使用? AsyncTask原理及不足AsyncTask不足AsyncTask内存泄漏问题 : 如何取消AsyncTask?SP是进程同步的吗?有什么方法做到同步?多进程是支持的但是大量同时读写操作也会存在问题,https://www.jianshu.com/p/c15a63301592https://blog.csdn.net/cjh94520/article/detail...原创 2018-04-04 10:46:33 · 1126 阅读 · 1 评论 -
图片知识点总结
Bitmap对象的理解Bitmap 使用时候注意什么?Bitmap的recycler()3.0之前BItmap内存是分成两个部分,一个部分DVM中。像素数据内存分配在Native堆中中,Native堆中的内存不受DVM管理,必须手动调用Recycle方法释放Bitmap内存3.0之后,Bitmap内存都交个虚拟机管理了图片库对比图片库的源码分析https://blog.csdn.net/u0121...原创 2018-04-04 10:33:12 · 563 阅读 · 0 评论 -
网络知识点总结
描述一次网络请求的流程TCP的3次握手和四次挥手TCP报文结构TCP与UDP的区别TCP与UDP的应用HTTP协议HTTP1.0与2.0的区别HTTP报文结构HTTP与HTTPS的区别以及如何实现安全性如何验证证书的合法性?https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?client如何确定自己发送的消息被server收到?SocketSocket本质谈谈你对...原创 2018-04-04 10:32:47 · 297 阅读 · 0 评论 -
动画知识点总结
Android属性动画特性Android补间动画差值器,估值器Android动画框架实现原理https://www.jianshu.com/p/e497123652b5原创 2018-04-04 10:17:24 · 270 阅读 · 0 评论 -
View知识点总结
自定义View基础View构造函数View Measure过程View Layout过程View Draw过程封装View的时候怎么知道view的大小如何优化自定义View为了加速你的view,对于频繁调用的方法,需要尽量减少不必要的代码。先从onDraw开始,需要特别注意不应该在这里做内存分配的事情,因为它会导致GC,从而导致卡顿。在初始化或者动画间隙期间做分配内存的动作。不要在动画正在执行的时...原创 2018-04-04 10:16:56 · 1103 阅读 · 0 评论 -
ContentProvider知识总结
谈谈你对ContentProvider的理解说说ContentProvider、ContentResolver、ContentObserver 之间的关系ContentProvider结构化存放数据,以相对安全的方式封装数据并提供简易的处理机制ContentResolver可以进行访问操作ContentObserver监听数据的变化请介绍下ContentProvider 是如何实现数据共享的?Co...原创 2018-04-04 10:05:35 · 492 阅读 · 0 评论 -
BroadcastReceiver知识总结
请描述一下广播BroadcastReceiver的理解广播的分类广播使用的方式和场景接收系统广播,比如手机的开关机。定时功能在manifest 和代码中如何注册和使用BroadcastReceiver?本地广播和全局广播有什么差别?BroadcastReceiver,LocalBroadcastReceiver 区别BroadcastReceiver使用的Binder机制,可应用于同一进程,也可应...原创 2018-04-04 10:04:54 · 449 阅读 · 0 评论 -
Service知识点总结
Service的开启方式请描述一下Service 的生命周期IntentService原理及作用是什么?如何保证一个后台服务不被杀死?(相同问题:如何保证service在后台不被kill?)比较省电的方式是什么?https://blog.csdn.net/ReturnNull0/article/details/53750483...原创 2018-04-04 10:03:41 · 166 阅读 · 0 评论 -
Activity知识总结
Activity之间的通信方式1,Intent2,静态变量传递数据,3,全局变量Application,要注意内存泄漏问题,4,外部工具SharedPrefrence,SQLLite,文件,总线EventBus,Android剪切板,Servicehttps://blog.csdn.net/a_running_wolf/article/details/48813995https://blog.cs...原创 2018-04-04 09:30:52 · 2277 阅读 · 0 评论 -
Android 5.0 6.0 7.0 8.0 9.0新特性总结
Android 5.01,扁平化的开始2,Dvk被Art替换Android 6.01,动态权限管理2,指纹识别3,电源管理4,移除了了httpClientAndroid 7.01,分屏多任务2,Android有popupwindow显示bugAndroid 8.01,画中画2,通知3,自适应图标4,后台进程限制5,特殊访问权限Android 9.01,刘海平支持https://blog.csdn....原创 2018-06-20 20:16:11 · 4555 阅读 · 3 评论 -
热修复选型和原理
微信的Tinker基于QQ空间的NumaAndroid ClassLoaderPathClassLoader 应用启动后加载 data/app/...DexClassLoader 应用启动前加载 热修复使用Numa原理,基于Android分包的基础上的,应用启动时加载主dex文件,启动后在加载其他的dex文件,多个dex文件排成有序数组,虚拟机加载类的时候会逐个加载dex文件,把热修复的代码插入到...原创 2018-06-14 09:50:27 · 419 阅读 · 0 评论 -
Apk签名,安装校验过程
原文地址 https://www.jianshu.com/p/1e8cfea539e6首先要了解是整个应用生成的过程 编译过程 .png 再来看一下最后生成的apk解压后的文件结构 Apk结构.png这里主要关注未签名和签名的apk的区别未签名的apk是没有MEAT-INF文件夹的,只有签名的apk才有这个文件夹。分别来看一下这个文件夹下的文件的含义...原创 2018-12-20 09:58:29 · 2368 阅读 · 1 评论 -
Client请求ServiceManager的交互过程
原文链接https://www.jianshu.com/p/8924a84b6aea首先要了解一下Binder使用的各个实体对象和代理对象,这个在Android智能指针中有体现,链接地址https://www.jianshu.com/p/e4379961ad74那么具体在Client请求ServiceManager的时候都是实现了什么操作呢?这里牵扯到两个进程Client和Servic...原创 2018-11-26 10:45:26 · 547 阅读 · 0 评论 -
Binder驱动
原文链接https://www.jianshu.com/p/5dd4c5a8333a要学习Android进程间通信那么第一步要掌握的就是Binder驱动,Binder驱动提供很多命令其中最常用的三个命令是open,mmap,ioctl,分别看一下这三个命令都是干啥的binder_open上层需要访问binder驱动时,首先需要打开/dev/binder结点。实现是在binder_ope...原创 2018-11-20 11:07:19 · 488 阅读 · 0 评论 -
Android中智能指针
原文链接 https://www.jianshu.com/p/e4379961ad74首先智能指针是应用在C++层面的,java中是把指针这个东西隐藏了的,回收对象使用GC不需要程序员自己去处理为什么要引入智能指针C++中使用对象会存在几个问题1,对象创建后的初始化问题2,new和delete不成对出现问题3,野指针问题什么是野指针,比如ptr指向一个对象,这个对象使用...原创 2018-11-19 11:32:27 · 264 阅读 · 0 评论 -
ServiceManger注册过程
原文链接https://www.jianshu.com/p/ef6359f63305ServiceManager他是单独跑在一个叫system_manager进程中的,是用来管理服务和查询服务的,类似网络中的DNS他自己本身也是一个服务,使用的是binder机制,那客户端如果要检索服务如何找到ServiceManager呢?ServiceManager有自己固定的handle值是0,客户端沟...原创 2018-11-21 10:15:27 · 311 阅读 · 0 评论 -
apk包中包含的是什么?签名的机制是什么?
Manifest.xml配置文件dex文件META签名加密文件三方包res资源文件 resources.arsc参考 https://www.cnblogs.com/jenson138/p/4220668.html原创 2018-06-19 19:27:22 · 1194 阅读 · 0 评论 -
Android安全
Android主要有一下几个角度来提供保障性1,Linux层各种安全机制,DAC、SELinux2,所有的应用程序都强制运行在自己的sandbox3,严格的进程间通信安全控制4,应用程序签名5,Permission机制设备root 程序加固 程序注入1,DAC(Discretionary Access Control)任意的、自主的,客体的属主可以自主的决定是否将全部的或部分的访问权限授予其他主体...原创 2018-06-18 20:57:47 · 211 阅读 · 0 评论 -
Android build构建流程
1,application resources 通过aapt执行成R.java2,aidl文件通过aidl生成aidl.java3,R.java + aidl.java + 源代码 通过java执行成class4,第三方库class + 执行生成的classes 通过dex生成dex文件5,dex文件 + 自己的资源 + 第三方的资源 通过apk build生成apk6,生成的apk通过jarsi...原创 2018-06-17 20:41:36 · 562 阅读 · 0 评论 -
Android架构
MVC MVP https://blog.csdn.net/u010072711/article/details/77132403MVVM https://blog.csdn.net/u010072711/article/details/78633151原创 2018-06-17 20:21:27 · 232 阅读 · 0 评论 -
ART虚拟机
ART执行的字节码所以速度会很快,使用AOT(AHead of Time)相对于JIT(Just In Time)会在应用创建的时候将dex编译成字节码时时间会比较长占用空间会比较大之所以会无缝的替换是因为他实现了虚拟机的接口内存回收机制对象的是否被引用 引用链清除算法 标记-清除参考文章 https://blog.csdn.net/luoshengyang/article/details/392...原创 2018-06-17 19:35:22 · 968 阅读 · 0 评论 -
DVK虚拟机
1,基于寄存器,他与基于堆栈的有什么区别?基于寄存器的执行速度会更快,但依赖底层硬件,只适用于ARM移动设备指令码会比堆栈的少编译文件不同,dvk编译的是dex文件他是特殊处理过的class文件,不在是以一个类class去区分,而是以方法,变量来区分,会比class文件更节省空间2,内存回收标记对象是不是被引用的方式是引用链清除的算法使用的是标记-清除 然后使用底层机制去整理内存参考博客 http...原创 2018-06-17 17:37:20 · 412 阅读 · 0 评论 -
Java集合 && Android提供的集合
LinkedList 底层结构是双重链表,线程不安全,可存储null,存储数据可重复,并且可用作堆栈,队列,双端队列同步方式可以使用List list = Collections.synchronizedList(new LinkedList(...));增删要比ArrayList高效ArrayList 底层是结构为可变数组,线程不安全,可以存储null,存储数据可重复同步方式 List list...原创 2018-06-16 21:54:41 · 421 阅读 · 0 评论 -
PackageManagerService解析
1,startService PackageManagerService2,建立Socket处理安装请求3,建立uid gid与上层permission的关系4,启动 AppDirObserver 线程监测/system/framework,/system/app,/data/app,/data/app-private 目录的事件,主要监听 add 和 remove 事件5,扫描以上的目录将解析的...原创 2018-06-24 16:19:28 · 345 阅读 · 0 评论 -
ListView源码解析
ListView使用是适配器模式,让ListView和数据源解耦,中间使用Adapter类做为缓冲实现与数据源的解耦使用的是RecycleBin机制,ListView父类AbsListView的一个内部类这个是ReccleBin的类注释,说的大概就是: RecyclerBin有利于view的重新利用, RecyclerBin有两种存储模式,一种是ActiveViews,一种是ScrapViews。...原创 2018-06-23 18:02:02 · 228 阅读 · 0 评论 -
Lru算法
最近最少使用1,最新插入的数据,或者最近被访问的数据,要在链表头部2,如果链表满了那么清除最末端数据java内部使用LinkedHashMap存储了存储元素的顺序只需重写removeEldestEntry用于移除最不常用的数据参考 http://flychao88.iteye.com/blog/1977653参考 https://blog.csdn.net/elricboa/article/det...原创 2018-06-23 15:55:47 · 223 阅读 · 0 评论 -
其他问题
回收顺序为空进程-->后台Activity-->服务进程-->可见Activity -->前台Activity空进程,后台进程,服务进程,可见进程,前台进程面试题库https://blog.csdn.net/qq_23477421/article/details/52000768https://blog.csdn.net/huangqili1314/article/deta...原创 2018-04-09 11:59:40 · 248 阅读 · 0 评论 -
Android异常情况知识点
ANR产生的原因是什么?ANR定位和修正https://blog.csdn.net/weixin_41101173/article/details/79713821oom是什么?什么情况导致oom?有什么解决方法可以避免OOM?Oom 是否可以try catch?为什么?可以try catch解决Oom后崩溃的问题,然后采取补救的措施,列如缩小图片,减少内存占用,但这并不是解决Oom的根本方法、要...原创 2018-04-08 09:44:28 · 188 阅读 · 0 评论 -
json解析错误
[Fail]com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Invalid double: ""当出现这种json解析错误的时候,大家查找的时候不仅仅要查找是否是 double 字段去解析空串了 还有可能是 int 是long 1,大家在解析数据时候 尽量使用String来解析 2,json数据类型一样的或...原创 2018-03-19 10:43:40 · 3271 阅读 · 0 评论 -
Dagger2
参考文章http://blog.csdn.net/lisdye2/article/details/51942511 构建环境http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0519/2892.html对于内存的开销比较大,暂不使用转载 2018-03-19 10:43:02 · 145 阅读 · 0 评论 -
.9图片使用小坑坑
原创 2018-03-19 10:41:54 · 508 阅读 · 0 评论 -
editText禁止键盘弹出
if (android.os.Build.VERSION.SDK_INT <= 10) { tvContent.setInputType(InputType.TYPE_NULL);} else { TorpedoTrackActivity.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_IN...原创 2018-03-19 10:41:07 · 594 阅读 · 0 评论