自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知道这个有什么用?

做一名优秀的程序员

  • 博客(11)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 JVM和Dalvik虚拟机的区别

JVM归Oracle公司所有,Google工程师要使用JVM,需要获得授权许可,这意味着要缴纳大量的费用。JVM使用基于栈的指令集,基于栈的指令集,具备可移植性。如果使用基于寄存器的指令集,会受到寄存器的硬件约束。例如:现在Intel 32位80x86体系的处理器中提供了8个32位的寄存器,而ARM体系的CPU(在当前的手机、PDA中相当流行的一种处理器)则提供了16个32位的通用寄存器。所以JVM主要解决跨平台问题。但是执行速度会慢一些。Dalvik使用基于寄存器的指令集,寄存器由硬件直接提供,是C.

2021-09-27 14:23:44 144

原创 App启动过程(一)从APK加载到launcher启动

手机屏幕本身就是一个Activity,这个Activity就是Launcher,源码目录:/packages/apps/Launcher2/src/com/android/launcher2/Launcher,点击查看Android 4.2.2 Launcher源码。用户点击要启动的应用的图标,Launcher会调用startActivitySafely方法参数Intent会携带目标应用的起始Acitvity。AMS是SystemServer进程启动的。APP启动流程解析init进程和Zygo.

2021-09-26 00:09:11 430

原创 如何通过Androidxref在线查看Android Framework源代码

打开androidxref,并选择具体的系统版本,例如选择Android 4.2版本。进入4.2版本的搜索界面,先选择右侧的framework。在Difinition输入框内输入鼎鼎大名的AMS:ActivityManagerService,点击搜索。

2021-09-25 18:25:03 476

原创 android系统体系架构

传统的4层架构应用层(Application)应用框架层(Application Framework)本地库和Android 运行库Linux内核层目前的5层架构系统应用层Java API Framework层Native C/C++ Library层和 Android Runtime层硬件抽象层(Hardware Abstraction Layer),HALLinux Kernel...

2021-09-25 17:13:53 109

原创 事件分发机制:从dispatchTouchEvent方法到onClick方法被调用

中,调用了performClickInternal(),然后在performClickInternal()中调用了performClick(),最终调用了OnClickListener。performClick()被performClickInternal()调用了,那performClickInternal()又被谁调用了?事件处理中,调用了performClick()方法。如上图,onTouchEvent()方法是在dispatchTouchEvent()方法中调用的。onTouchEvent()的。

2021-09-25 15:49:06 270

原创 如何在牛客网上记录面试问答

找到讨论区,在下拉菜单中选择”讨论区“。找到“我要发布”按钮。第一次写文章前,有几道答题。文章编辑区如下:

2021-09-24 21:33:09 238

原创 面向对象的六大设计原则

开闭原则(Open Close Principle)对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。里氏代换原则(Liskov Substitution Principle)任何基类可能出现的地方,子类一定可以出现。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是

2021-09-23 21:27:57 149

原创 Service系列:什么是前台服务?

将服务改成前台服务foreground service:重写onStartCommand方法,使用StartForeground(int,Notification)方法来启动service。注:一般前台服务会在状态栏显示一个通知,最典型的应用就是音乐播放器,只要在播放状态下,就算休眠也不会被杀,如果不想显示通知,只要把参数里的int设为0即可。同时,对于通过startForeground启动的service,onDestory方法中需要通过stopForeground(true)来取消前台运行状态.

2021-09-23 16:26:09 401

原创 ANR系列:Android 8.0不同组件触发ANR的过程

点击事件(按键和触摸事件)5s内没有处理完毕。对于前台服务,则超时为SERVICE_TIMEOUT = 20s;对于后台服务,则超时为SERVICE_BACKGROUND_TIMEOUT = 200sBroadcastReceiver的事件(onRecieve方法)在规定时间内没处理完(前台广播为10s,后台广播为60s)ContentProvider的publish在10s内没进行完。ANR监测机制...

2021-09-23 15:35:21 289

原创 RecyclerView与ListView的区别

RecyclerView有4级缓存,ListView只有两级缓存。

2021-09-23 15:30:10 71

原创 MacBook使用技巧汇总

command+shift+4 这种截屏方式,可以截图,可以简单的编辑,比如划线。但是不能打马赛克。使用微信截图,默认是control+command+A,这个快捷键可以修改。可以使用马赛克。QQ截图,默认也是control+command+A。系统截图微信截图...

2021-09-19 15:53:48 683

《Software Architecture Design Patterns in Java》原版PDF 下载

《Software Architecture Design Patterns in Java》PDF 下载,本来是想0分的,但最低只能设置2分。

2017-12-08

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除