Android开发
Android相关知识
吃了么没吃回家吃点儿
记录学习过程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android ButterKnife初识及使用
参考自:https://www.jianshu.com/p/3678aafdabc7一、简介定义:ButterKnife是一个专注于Android系统的View注入框架项目地址:https://github.com/JakeWharton/butterknife优势:View绑定和Click处理使用ButterKnife对性能基本没有损失因为ButterKn...原创 2018-10-09 00:32:30 · 204 阅读 · 0 评论 -
Android EventBus初识及使用
源码地址:https://github.com/greenrobot/EventBus参考自:https://blog.youkuaiyun.com/u011240877/article/details/73015939https://juejin.im/entry/5a91a02d6fb9a06340522ac0https://segmentfault.com/a/11900000043143...原创 2018-10-09 00:30:14 · 276 阅读 · 0 评论 -
Android Retrofit初识及使用
参考自:https://blog.youkuaiyun.com/carson_ho/article/details/73732076一、初识1、 基于OkHttp真正的请求是用OkHttp完成的,Retrofit只是封装接口2、 通过注解的方式配置参数(1)网络请求方法类(2)标记类(3)网络请求参数类@Field & @FieldMap作用:发送 Post请求 时...原创 2018-10-09 00:27:11 · 247 阅读 · 0 评论 -
《Android校招面试指南》之设计模式复习梳理
一、创建型模式创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。1、简单工...原创 2018-11-26 17:33:18 · 498 阅读 · 0 评论 -
《Android校招面试指南》之Android基础复习梳理
本文梳理自:https://lrh1993.gitbooks.io/android_interview_guide/content/一、Activity全方位解析1、横竖屏切换生命周期(意外中止生命周期)onPause()->onSaveInstanceState()-> onStop()->onDestroy()->onCreate()->onStart(...原创 2018-11-26 17:30:22 · 984 阅读 · 0 评论 -
《Kotlin实战》学习笔记之第二章:Kotlin基础
一、基本要素:函数和变量1、Hello,worldfun main(args: Array<Stirng>) { println("Hello, world!")}关键字fun声明函数数组就是类。Kotlin没有声明数组类型的特殊语法可以省略每行代码结尾的分号2、函数//:后跟的是函数或参数的类型fun max(a: Int, b: Int): Int...原创 2018-10-23 21:07:17 · 187 阅读 · 0 评论 -
《Kotlin实战》学习笔记之第一章:Kotlin 定义和目的
1、静态类型的编程语言Kotlin和Java都是静态类型的编程语言,所有的表达式类型在编译期就确定了编译器能够根据上下文推断变量类型(类型推导)Kotlin对可空类型的支持(使用?声明)eg:val s: String? = nullKotlin有助于避免ClassCastException在kotlin中,一旦在开始检查过类型后就无需额外的引用就能使用属于该类型...原创 2018-10-23 20:56:30 · 201 阅读 · 0 评论 -
Android 代码命名规范
参考自:https://blog.youkuaiyun.com/myxiaoq/article/details/52231906及《Alibaba Android开发手册》一、包名com.xx.应用名称缩写.功能包名此包中包含com.xx.应用名称缩写.activity页面用到的Activity类 (activitie层级名用户界面层)com.xx.应用名称缩写.fr...原创 2018-10-09 00:36:18 · 434 阅读 · 0 评论 -
《深入理解Java虚拟机》学习笔记之线程安全与锁优化
二、线程安全定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的” ——Brian Goetz《Java Concurrency In Practice》线程安全代码的特征:代码本身封装了所有必要的正确性保障手段(如互斥同...原创 2018-11-22 23:11:59 · 203 阅读 · 0 评论 -
《深入理解Java虚拟机》学习笔记之Java内存模型与线程
一、概述并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因Amdahl定律:通过系统中并行化与串行化的比重来描述多处理器系统能获得的运算加速能力摩尔定律:用于描述处理器晶体管数量与运行效率之间的发展关系这两个定律的更替代表了近年来硬件发展从追求处理器频率到追求多核心并行处理的发展过程衡量一个服务性能的高低好坏,每秒事务处理数(Transac...原创 2018-11-22 18:48:21 · 200 阅读 · 0 评论 -
《深入理解Java虚拟机》学习笔记之类加载机制
定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制过程:在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的优点:高度的灵活性。Java中可以动态扩展的语言特性就是依赖 运行期间动态加载和动态连接 这个特点实现的缺点:类加载时的性能开销。...原创 2018-11-21 19:36:04 · 200 阅读 · 0 评论 -
《深入理解Java虚拟机》学习笔记之类文件结构
1、代码编译的结果:从本地机器码转变为字节码目的:编译器将机器码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令定义解释:(1)字节码(Bytecode):主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。典型应用:Java Bytecode每一个字节为8个二进制数字,有256个可能的代码值(2的8次方...原创 2018-11-18 15:57:19 · 208 阅读 · 0 评论 -
《深入理解Java虚拟机》学习笔记之垃圾收集器与内存分配策略
一、概述GC(Garbage Collection)需要完成的三件事(1)哪些内存需要回收(2)什么时候回收(3)如何回收GC主要面向Java堆和方法区中的内存原因:这部份内存的分配和回收都是动态的只有在程序处于运行期间时才能知道会创建哪些对象程序计数器、虚拟机栈、本地方法栈三个区域随线程而生、随线程而灭,内存分配和回收具有确定性二、对象已死吗(判断对象...原创 2018-10-25 15:16:08 · 364 阅读 · 0 评论 -
《深入理解Java虚拟机》学习笔记之Java内存区域与内存溢出异常
一、概述在虚拟机自动内存管理机制的帮助下,Java不再需要像C++一样为每一个new操作书写delete/free代码二、运行时数据区域(五大主要组成部分)1、程序计数器定义:程序计数器是一块娇小的内存空间,可以看作是当前线程所执行的字节码的行号指示器应用:在虚拟机的概念模型里(仅概念模型,不同虚拟机可能有更高效的实现),字节码解释器工作时,就是通过改变这个计数器的值来选去...原创 2018-10-24 10:24:27 · 244 阅读 · 0 评论 -
Java 四种引用类型
一、概述什么是引用?在java中,没用指针,对象的操作全部凭借引用来与之产生关联,通过操作相关联的引用,来达到操作所需对象的目的一个对象,是可以被多个引用持有的等级: 强 > 软 > 弱 > 虚作用:灵活的控制对象的生命周期提高对象的回收机率二、四种引用类型1、强引用(StrongRefernce)强引用可以直接访问目标对象,强引用所关...原创 2018-10-09 00:22:24 · 588 阅读 · 0 评论 -
Fresco翻转并拼接图片
方法一:拼接两个DraweeView(❌)1、思路第一个DraweeView显示原图下方接一个DraweeView裁减至原图的四分之一并拼接2、优缺点优点:简单直观缺点:对同一张图片需要两个DraweeView去分别显示,造成不必要的内存浪费方法二:拼接两个Bitmap(✅)1、思路通过Fresco后处理器process( Bitmap sourceBitmap, P...原创 2020-04-30 15:48:58 · 346 阅读 · 0 评论 -
小红点自定义View
有段日子没写过自定义View了,一个小Demo,复习一下~public class DragDotView extends View { /** * 文本内容 */ private String mTitleText; /** * 文本的颜色 */ private int mTitleTextColor; /** * 文本的大小 */...原创 2020-04-26 17:47:47 · 245 阅读 · 0 评论 -
Android 异步更新UI的几种方式
参考自:https://blog.youkuaiyun.com/ydxlt/article/details/51247822 异步更新UI的五种方式一、为什么不能在主线程更新UIViewRootImpl通过 checkThread() 方法检查更新UI操作是否是在主线程当中原因:Android的UI是线程不安全的,存在并发访问的问题。加锁也不合适:加锁会让UI访问的逻辑变得复杂加锁会降低U...原创 2018-10-09 00:15:32 · 3245 阅读 · 0 评论 -
Android 三种菜单(Menu)的实现
一、常用方法onCreateOptionsMenu(Menu menu)每次Activity一创建就会执行,一般只执行一次,创建并保留Menu的实例;//获取MenuInflater MenuInflater inflater = getMenuInflater();//加载Menu资源 inflater.inflate(R.menu.option_menu_norma...原创 2018-10-09 00:10:49 · 11845 阅读 · 0 评论 -
Android 自定义组合控件实例
参考自:https://blog.youkuaiyun.com/itachi85/article/details/51435187一、定义组合控件的布局view_customtitle.xml&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;RelativeLayout xmlns:android="htt原创 2018-10-09 00:10:57 · 177 阅读 · 0 评论 -
Android 使用ViewStub优化布局
1、简介定义:ViewStub是View的子类,它不可见,大小为0,用来延迟加载布局资源当ViewStub被设置成可见(Visible),或者它的 inflate() 方法被调用的时候,布局资源才会被填充,然后ViewStub本身就会被填充起来的布局资源替换掉与Visbility.GONE的区别属性特征ViewStub把View设置成GONE,但是View...原创 2018-10-09 00:10:39 · 915 阅读 · 0 评论 -
Android UI小细节实现方案
一、修改ToolBar的样式(1)首先在styles中定义属性&lt;style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar"&gt; &lt;item name="android:textColor"&gt;@color/tex原创 2018-10-05 15:30:13 · 197 阅读 · 0 评论 -
《Android群英传》学习笔记之Activity与Activity调用栈分析
一、Activity1、Activity形态:Active/Running处于栈顶,可交互。Paused被遮挡但未被完全覆盖,失去焦点,不可交互。Stopped被完全覆盖,但保持了所有状态信息和成员变量。KilledActivity被回收或从未被创建过。程序员不可控制Stop状态下何时销毁Activity。2、生命周期:onDestroy():记得在这里清除开启的线程...原创 2018-10-05 14:20:56 · 186 阅读 · 0 评论 -
《Android群英传》学习笔记之Android控件架构与自定义控件详解
一、Android控件架构:控件大致分为两类:ViewGroup控件与View控件。View是绘制在屏幕上的用户能与之交互的一个对象。而ViewGroup则是一个用于存放其他View(和ViewGroup)对象的布局容器。其中,View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的。(1)View:View对象是Android平台中用户界...原创 2018-10-05 14:00:07 · 311 阅读 · 0 评论 -
《Android群英传》学习笔记之Android体系与系统架构
一、Android系统架构1.Linux内核层Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。2.系统库和运行时系统库包括九个子系统,分别是图层管理、媒体库...原创 2018-10-05 13:53:27 · 207 阅读 · 0 评论 -
《Android开发艺术探索》学习笔记之Android的线程和线程池
一、概述1、主线程与子线程主线程又叫UI线程主要作用是运行四大组件以及处理它们和用户的交互,主要用来处理和界面相关的事情子线程执行耗时任务,比如网络请求、I/O操作等网络访问必须要在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException为了避免被耗时操作所阻塞从而出现ANR现象2、可以扮演线程角色的有(1)Thr...原创 2018-10-04 15:26:32 · 232 阅读 · 0 评论 -
《Android开发艺术探索》学习笔记之Bitmap的高效加载和Cache
一、Bitmap的高效加载Bitmap在Android中指的是一张图片1、图片的解析BitmapFactory提供了四种方法来解析一张bitmap(1)decodeFile:从文件系统中加载(2)decodeResource:从资源中加载(3)decodeStream:从输入流中加载(4)decodeByteArray:从字节数组中加载2、图片尺寸的转换采用Bi...原创 2018-10-04 15:19:02 · 231 阅读 · 0 评论 -
《Android开发艺术探索》学习笔记之Android的性能优化
一、常见性能问题1、ANR:ANR全名Application Not Responding, 也就是"应用无响应". 当操作在一段时间内系统无法处理时, 系统层面会弹出如图那样的ANR对话框.产生原因:在主线程(UI线程)里面做了太多的阻塞耗时操作,例如文件读写, 数据库读写, 网络查询等等.5s内无法响应用户输入事件(例如键盘输入, 触摸屏幕等)BroadcastReceive...原创 2018-10-04 15:08:28 · 265 阅读 · 0 评论 -
《Android开发艺术探索》学习笔记之Android的消息机制
《Android开发艺术探索》学习笔记之Android的消息机制一、概述1、Handler的主要作用是将某个任务切换到指定的线程中去执行eg:子线程中无法更新UI,需切换到主线程ViewRootImpl通过 checkThread() 方法检查更新UI操作是否是在主线程当中原因:Android的UI是线程不安全的,存在并发访问的问题。加锁也不合适加锁会让UI访问的逻辑变得复杂...原创 2018-10-04 11:10:51 · 237 阅读 · 0 评论 -
《Android 开发艺术探索》学习笔记之Android动画深入分析
Android的动画有三种:View动画、帧动画和属性动画一、View动画View动画是对View的影像做改变,并不是真的改变View的状态1、View动画的种类共有四种,分别对应着Animation的四个子类及XML文件中的四种标签 名称 子类 标签 平移动画 TranslateAnimation &amp;lt;translate&amp;gt;...原创 2018-08-16 09:54:40 · 227 阅读 · 0 评论 -
《Android 开发艺术探索》学习笔记之Andorid的Drawable
Drawable是一种可以在Canvas上进行绘制的抽象的概念优点 使用简单,比自定义View的成本要低减小apk的大小,非图片类型的drawable占用的空间较小一、简介Drawable是一个抽象类,是所有Drawable对象的基类。内部宽高 通过getIntrinsicWidth和getIntrinsicHeight获取并不是所有的Drawable都有内部宽高 eg...原创 2018-08-16 09:28:45 · 273 阅读 · 0 评论 -
《Android 开发艺术探索》学习笔记之View的事件体系
一、View基础知识1、View的位置参数 - 在Android中,左上角为坐标原点,x、y的正方向分别是右和下 - View的位置主要由四个顶点(相对父容器)决定 - top:左上角纵坐标 - top = getTop(); - left:左上角横坐标 - left = getLeft(); - right...原创 2018-08-15 22:43:43 · 254 阅读 · 0 评论 -
《Android 开发艺术探索》学习笔记之View的工作原理
一、ViewRoot与DecorView1、ViewRootViewRoot对应于ViewRootImpl类是链接WindowManager和DecorView的纽带View的三大流程均是通过ViewRoot来完成的 在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将其与...原创 2018-08-15 22:26:08 · 276 阅读 · 0 评论 -
《Android 开发艺术探索》学习笔记之Activity生命周期和启动模式
Activity生命周期和启动模式Activity生命周期分析Activity在onStart()的时候还在后台,onResume()的时候才显示到前台。在新Activity启动之前,栈顶的Acticity需要先onPause()后,才执行新Activity的onCreate(),因此不能在onPause()中执行耗时的操作,尽量在onStop中做耗时的操作。 onStop()不...原创 2018-08-15 17:37:49 · 579 阅读 · 0 评论 -
Android 来电状态监听
public class MyActivity extends FragmentActivity { private PhoneCallStateListener mListener = new PhoneCallStateListener(); @Override public void onCreate(Context context) { super.onCreate(context); TelephonyManager teleph原创 2020-08-12 11:56:32 · 557 阅读 · 0 评论
分享