- 博客(51)
- 资源 (7)
- 收藏
- 关注

原创 自由笔记分享
距离上一篇博客已经过去了5年,5年来一直比较懒,也不想再写博客,大多数时间都自己学习了然后记录了笔记。2年前由于公司业务变动,由安卓开发转为安卓/后端开发,前后都要学,也不知道这是好是坏,自从升职为开发主管之后,管理公司的一条业务线,更多的时间精力放在了管理沟通方面,只有晚上或者周末的时间用来自己学习。5年来对安卓和java后端的学习积累,感觉技术栈范围真的太广,有的东西如果没有项目...
2020-03-29 22:33:02
364
1
原创 自由笔记-AndroidView模块之WindowManager相关分析
所有和Activity相关的Window初始化都在Activity的attach方法里面,该方法会在Activity被创建的时候执行Window:窗体抽象类,主要实现对象是PhoneWindow,主要成员:// 创建窗口默认会创建对应的窗体布局参数private final WindowManager.LayoutParams mWindowAttributes =new W...
2020-04-07 16:20:55
427
原创 自由笔记-AndroidView模块之自定义View画布相关
1、Paint的基本实用方法和技巧(1)基本的使用1.1 负责图形绘制相关//重置mPaint.reset();mPaint.setColor(Color.RED);mPaint.setAlpha(255);//设置画笔的样式mPaint.setStyle(Paint.Style.FILL);//填充内容mPaint.setStyle(Paint.Style.F...
2020-04-07 16:19:21
240
原创 自由笔记-AndroidView模块之View滑动相关
View滑动的三种方式1、使用scrollTo/scrollBy起始坐标为左上角(0,0)1、移动View内容的相关变量和方法 (注意:是移动View所包含的内容,而非View本身)//View的内容相对于View在水平方向上的偏移量,以像素为单位//当mScrollX为正数时,内容相对于View从右向左移动,反之则向从左向右移动protected int mS...
2020-04-07 16:17:35
236
原创 自由笔记-AndroidView模块之View绘制流程分析
View绘制流程:起始点为ViewRootImp的performTraversals方法。在该方法中调动这3个方法来触发以下3个流程performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);performLayout(lp, desiredWindowWidth, desiredWindowHeight);perfo...
2020-04-07 16:16:43
275
原创 自由笔记-AndroidView模块之View加载流程分析
Activity启动时,View加载到Window流程1、Window类,是一个抽象类,Window可以理解为一个载体,所有视图View的载体。2、PhoneWindow,Window的主要实现体,该类内部包含了一个DecorView对象,该DectorView对象是所有应用窗口(Activity界面)的根View。简而言之,PhoneWindow类是把一个FrameLayout...
2020-04-07 16:16:02
238
原创 自由笔记-AndroidView模块之View触摸事件分发机制分析
相关方法介绍:dispatchTouchEvent方法:事件的分发。返回值一般由里面的onTouchEvent方法或者下架View的dispatchTouchEvent方法决定。onInterceptTouchEvent:事件的拦截,如果Down事件一旦拦截了,那么之后的move和up事件也会一起拦截。事件不会在向下传递。onTouchEvent:事件的处理。如果在子View中设定了m...
2020-04-07 16:14:02
238
原创 自由笔记-AndroidView模块之WebView
1、webView的状态onResume:激活webview为活跃状态,能正常执行网页响应。onPasue:当页面失去焦点或者不可见状态,执行该方法,表示通知内核暂停所有动作。pauseTimers,当前应用程序被切换到后台的时候,该方法会通知全局应用程序的webView暂停所有绘制,解析等动作,降低CPU功耗resumeTimers退出释放private vo...
2020-04-07 16:12:44
576
原创 自由笔记-Activity之启动模式简介
启动模式这里笔记记得比较简单,随意看看就好“standard” (默认)“singleTop”“singleTask”“singleInstance”它们主要有如下不同:1)如何决定所属task“standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,除非intent包括参数FLAG_ACTIVIT...
2020-04-07 16:11:18
140
原创 自由笔记-Activity之启动流程分析
Activity框架和管理结构Activity管理的核心是AcitivityManagerService,是一个独立的进程;ActiveThread是每一个应用程序所在进程的主线程,循环的消息处理;ActiveThread与AcitivityManagerService的通信是属于进程间通信,使用binder机制,通过ApplicationThread这个桥梁进行通信Applica...
2020-04-07 16:06:03
275
原创 自由笔记-Activity之Context相关
1、Activity、Service、Application都是Context的子类2、Activity、Service、Application都是继承自ContextWrapper,而ContextWrapper内部会包含一个base context,由这个base context去实现了绝大多数的方法。这个baseContext是一个ContextImp,实现了和四大组件相关的大多数方...
2020-04-07 16:04:53
235
翻译 Android开发架构设计之健壮且可读的安卓架构(下篇)
原文地址:http://blog.joanzapata.com/robust-and-readable-part-2-introducing-async-service/健壮且可读的安卓架构(二)注意:阅读这篇文章之前请阅读第一部分我收到很多关于我的架构设计的评论和反馈,特别感谢每周安卓社区(Android weekly),你们中的一切人注意到我的架构中的一些弱点,或者
2015-03-22 12:49:18
1195
转载 Android开发架构设计之健壮且可读的安卓架构(上篇)
博主这几个星期都比较忙,刚入职新公司,有太多的东西需要去熟悉,比如公司的代码,新的开发工具,博主已经弃用eclipse转用AS了。不过发现AS这个玩意确实比eclipse好用,而且现在github上的一些项目已经是AS结构,所以建议同学们也开始转用AS吧。这篇文章是博主最近在学习一个新的开源框架snappyDB的时候发现的,觉得写得很不错,网上已经有了原文的翻译,但这只是第一部分,原作者在去年
2015-03-22 12:36:07
1319
原创 Android开发之浅谈广播的运用
之前讲过了activity,服务service和内容提供者,四大组件就还差广播没讲,所以就顺便讲讲吧。当然,这里都是很基础的讲解,没有深入,要是深入的话光一个activity就可以讲很久。所以这里只做基础使用的讲解了。时间紧迫,直接上代码吧。首先,广播有两种注册方式,一种在清单文件中注册,注册后程序一运行广播就开始监听。一种在代码中注册,根据需求注册注销广播。我们先看广播的第一种注册方
2015-02-28 21:25:50
2318
原创 Android开发之浅谈内容提供者provider的使用
大家新年好。博主刚回到广州就要各种忙。博主换了份工作,所以昨天一来到广州就忙着找房子,好在昨晚就已经搞定。时间比较紧迫,这篇文章就直接将如何使用provider了。内容提供者一般用于进程之间通信,当一个app需要访问另外一个app的数据库内容的时候,就需要用到内容提供者。为了节约时间,博主直接偷懒上代码了,直接拿博主之前写过的一个短信项目来上了。首先,定义一个内容提供者package
2015-02-28 11:55:15
742
转载 Android开发之binder机制详解
此文为转载文章,但是转载处没有标记处转载地址,故这里也不能写出转载地址。另外在推荐一篇关于binder机制讲解的文章:Android深入浅出之Binder机制1.binder通信概述 binder通信是一种client-server的通信结构, 1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用; 2.实际上
2015-02-08 22:44:22
1271
原创 Android开发之Service服务详解
服务,作为Android四大组件之一,必然是重点。我们今天就来讲解一下有关服务的生命周期、两种开启方式以及相关用法。服务有两种开启方式,一种是正常开启, 一种是以绑定的方式开启,当然,这两种方式可以组成混合开启。一、服务的正常开启正常开启服务的方法非常简单,我们先看如何定义一个服务1、编写一个类,继承Service类。 我们先不管代码中的binder类。那个后续讲解
2015-02-08 00:03:38
1160
原创 Android开发之图片处理专题(三):利用ThreadPoolExcutor线程池实现多图片的异步加载
在上一篇专题Android开发之图片处理专题(二):利用AsyncTask和回调接口实现图片的异步加载和压缩中我们实现了listView的图片的大量加载。今天,我们换一种方式,采用线程池的方式来实现。我们需要准备两个东西:1、图片下载任务类2、线程池。1、图片下载任务类。图片下载任务类,将需要显示的iamgeView,线程通讯消息管理者handler进行了封装。当图片下
2015-02-01 22:53:28
2100
原创 Android开发之图片处理专题(二):利用AsyncTask和回调接口实现图片的异步加载和压缩
在上一篇专题Android开发之图片处理专题(一):利用软引用构建图片高速缓存中我们讲述了如何利用软引用技术构建高速缓存。那么想要用到图片,首先得有图片的来源。一般而言,一个应用的图片资源都是从服务器处获得的。今天,我们利用Android开发之网络请求通信专题(二):基于HttpClient的文件上传下载里面封装好的httpUtils来实现图片的下载,然后加载到本地并使用,以一个listView为
2015-01-31 23:29:57
1948
原创 Android开发之图片处理专题(一):利用软引用构建图片高速缓存
在Android开发中,图片处理是一个难点。对于大量的图片处理,一不小心就会出现OOM的错误。那么,构建缓存,就是非常必要的一个手段。利用软引用构建缓存,只是其中步骤之一,我们来看看一般情况下,图篇处理的流程。一般而言,图片的处理流程大致如上,之前所说的Xutils的原理,也如此。今天,我们就先讲讲如何利用软引用技术来构建高速缓存。一、对象的四种引用在JDK 1.2以前的版
2015-01-30 16:54:25
1869
1
转载 Android开发性能优化总结
性能优化是android开发中的一大难点,一般而言开发中常用的优化方法有建立缓存,listView的view复用,static变量的合理使用,图片异步加载,软弱应用的使用,xml布局文件的优化,viewStub的使用等。博主最近想写一篇关于性能优化的专题,但是发现网上有一篇写的很好的文章了,就拿来和大家一起分享吧。本文转自:Android性能优化总结前言性能优化本身是一个很
2015-01-29 09:34:23
764
转载 JAVA学习笔记之多线程专题(三):线程池的使用
本文转自:http://www.xuanyusong.com/archives/2439Android线程池使用终结版有一段时间没写博文了,今天抽空总结一下,也希望能通过自己写的这些文章,加深理解的同时能帮助在技术方面有疑点的朋友搞清楚个所以然来,由于经常会在网上或群里看到有朋友会问线程方面的东西,就像我一个朋友他们老师讲的,J2SE、J2EE里面使用的线程方面的东西可
2015-01-27 13:47:59
1084
转载 JAVA学习笔记之多线程专题(二):线程池概述
本文转自:http://blog.youkuaiyun.com/wangwenhui11/article/details/6760474一、简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long
2015-01-27 13:41:25
722
原创 JAVA学习笔记之多线程专题(一):线程同步安全处理
关于多线程操作,我相信大家都不陌生,如何开启一个线程之类我想就不用太详细的去描述,今天我们就来讲讲线程同步的安全的问题。对于线程同步安全问题,一般是一个多线程对同一个资源同时操作的时候,会出现资源同时操作造成线程不安全的问题。那么这个时候我们需要去对公共资源进行同步保护。这个时候有三种情况1、同步代码块,这个同步的锁是任意一个对象;2、方法同步,这个同步的锁就是该方法所在的类;3、
2015-01-27 00:14:40
924
原创 Android开发之网络请求通信专题(二):基于HttpClient的文件上传下载
上一篇专题Android开发之网络请求通信专题(一):基于HttpURLConnection的请求通信我们讲解了如何使用httpurlconnection来实现基本的文本数据传输。一般在实际开发中我们可以用于传输xml或者json格式的数据。今天我们来讲解另外一种http网络请求的方式:httpclient,并实现文件的上传和下载。在这里插个题外话,其实这些网络请求有很多第三方jar包可以使用
2015-01-25 23:27:00
3873
原创 Android开发之网络请求通信专题(一):基于HttpURLConnection的请求通信
在Android开发中,网络请求必然是必不可少。一般而言,都是基于http的网络请求。有时候也会有SOCKET请求,这个后续的专题再讲。今天,我们就先讲讲常用的Http请求。http求情自然是遵循http协议的,相关内容请转接:Java学习笔记之Http协议详解好了,开始今天的正题。一、基础HTTPURL请求方式我们先来看一个最简单的例子,通过get方法请求拿到返回值1
2015-01-24 16:50:14
2612
转载 Android开发之JNI调用本地C库专题(二):Android增量更新
增量更新,是应用升级的一项技术,他可以节约用户的流量,只需要下载和当前版本的差异包即可更新。关于增量更新,网上有很多的文章写得很好,包括将库文件打包成jar包移动使用的都讲解得很详细,在看了之前的jni技术后,相信大家都可以自己写出来,在这里博主就不在详细写了。有个地方可以注意一下,在解压bzip2包中的文件到jni目录中,可以不用全部的写入,只需要将.mk文件中的.c文件解压和.h头文件解压
2015-01-21 23:12:56
1082
原创 Android开发之JNI调用本地C库专题(一):JNI的使用
JNI,是用于开发本地C函数库的技术。用于链接JAVA和C或者C++语言的桥梁。在部分android项目开发中,我们是需要用到这项技术的。那么废话不多说,进入正题。开发JNI,需要用到NDK,这个大家应该都知道了。还需要一个linux的开发环境。一般而言,可以使用虚拟机装一个ubantu,博主以前就是搞linux开发的,这点还是比较熟悉。但是对于大部分android开发者而言,弄一个虚拟机成本
2015-01-21 22:54:29
2905
原创 SQL学习笔记之数据库专题(四):浅谈JDBC用法
数据库厂商提供的用来操作数据库用的jar包就是数据库驱动。各个厂商如果提供各自的数据库驱动的话会导致开发人员学习成本太高,所以sun公司提供了一套数据库驱动应该遵循的接口规范,这套规范就叫做JDBC,本质上是很多的接口。简而言之,JDBC就是一套操作数据库的接口规范,由于所有的数据库驱动都遵循JDBC规范,我们在学习和使用数据库时只要学习JDBC中的接口就可以了。组成JDBC的2个包:java
2015-01-17 14:45:46
1328
原创 SQL学习笔记之数据库专题(三):Android下Sqlite数据库ORM框架之GreenDao详解
在大型项目中,android的数据库操作不可能再像第二篇文章那样,用最基础的API去实现各方面的操作,那样效率会十分的底下。那么,在android开发中,提拱了androrm,Ormlite,greenDao三个主流框架,博主三生有幸,再开发第一个项目的时候,就被逼着学习使用greenDao这个ORM框架。现在回过头看,greenDao似乎是三种框架中效率最高的,但是对于初学者来说,使用起来非常的
2015-01-10 17:39:25
4079
原创 SQL学习笔记之数据库专题(二):Android下SQL数据库开发
在Android开发 中,数据库是不可缺少的。在Android开发中,用的是一种小型的嵌入式数据库,sqllite。今天会写两篇关于Android开发环境下数据库开发的文章,第一篇先介绍使用android自带的API来实现数据库的使用和管理以及增删改查、数据库升级的相关操作。一、数据库第一次生成1、javabean文件的准备这里以一个Person类为例子来描述package c
2015-01-10 16:01:55
1136
原创 SQL学习笔记之数据库专题(一):SQL语句详解
SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的四方面功能。常见的关系数据库有Oracle,SQLServer,DB2,Sybase。开源不收费的有MYSQL,SQLLite等。今天我们主要以MYSQL为例子,讲解SQL常用的SQL语句。一.数据库1.创建数据库create database [if not exists] db_name [charact
2015-01-08 15:59:15
2684
转载 JAVA学习笔记之23种设计模式学习
博主最近买了《设计模式》这本书来学习,无奈这本书是以C++语言为基础进行说明,整个学习流程下来效率不是很高,虽然有的设计模式通俗易懂,但感觉还是没有充分的掌握了所有的设计模式。于是博主百度了一番,发现有大神写过了这方面的问题,于是博主迅速拿来学习。一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模
2015-01-05 23:01:08
1191
原创 Android开发之自定义View专题(四):自定义ViewGroup
有时候,我们会有这样的需求,一个activity里面需要有两个或者多个界面切换,就像Viewpager那样。但是在这些界面里面又需要能够有listView,gridview等组件。如果是纵向的,似乎还好,没什么影响,那么如果是横向的,那么就会出事情。因为Viewpager会拦截触摸事件。而如果将Viewpager的触摸事件拦截掉给里面的子控件,那么Viewpager又不能响应滑动事件了。那么如何又
2015-01-05 19:25:41
949
原创 Android开发之自定义View专题(三):自定义GridView
gridview作为android开发中常用的组件,其功能十分强大。但是,我们有时候有很多特殊的需求,需要在其基础上进行改造。有时候会有移动gridView中item位置的需求,这个网上已经有很多例子,博主就不在描述。今天博主讲的是移动gridView中item中的内容。博主没看过网上那些移动item位置的demo,不知道其原理是不是和博主想的一样。博主思考过,似乎博主的这种实现原理似乎也可以用作
2015-01-04 22:13:33
2311
1
原创 Android开发之自定义View专题(二):自定义饼图
在图表里面,常用的图标一般为折线图、柱形图和饼图,上周,博主已经将柱形图分享。在博主的项目里面其实还用到了饼图,但没用到折线图。其实学会了其中一个,再去写其他的,应该都是知道该怎么写的,原理都是自己绘制图形,然后获取触摸位置判定点击事件。好了,废话不多说,直接上今天的饼图的效果图这次也是博主从项目里面抽离出来的,这次的代码注释会比上次的柱形图更加的详细,更加便于有兴趣的朋友一起学习
2015-01-03 16:14:52
2076
原创 Android开发之自定义View专题(一):自定义柱形图
博主之前做的项目中,需要用到报表功能,之前在网上百度谷歌各种结果,没有一个是能够满足博主的老板的需求的,无奈之前博主只好自己去研究。终于研究出了一个不错的结果。先上效果图:这是博主的一个项目的一个报表。老板要求可以点击左侧的月份进行月份比较,也可以点击选择月份,右边柱形图条状是可以响应点击事件的,并且可以左右滑动切换月份,如果柱形图内容过长超出界面,也是可以左右滑动查看未显示全的内容的。这里只
2014-12-28 22:31:25
2841
9
原创 Java学习笔记之异常专题
刚刚写完Android的全局异常捕获专题,提到了异常机制,那么就接着谢谢关于java的异常机制吧。异常:对问题的描述,将问题进行对象的封装。异常体系java.lang.Throwablejava.lang.Exceptionjava.lang.Error异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。也就是说可以被throw和throws关键字操作
2014-12-25 23:50:49
731
原创 Android开发之全局异常捕获完美闪退APP专题
其实写这边文章之前,一直在考虑要不要标注为原创,因为全局异常捕获的机制,自己也是看了别人的文章学来的,百度全局异常捕获,出来的也都是一模一样的内容,只是博客位置不一样而已。但是最后要是决定标准为原创,因为网上的那些全局异常捕获的文章,虽然交代了如何去处理全局异常捕获,但是却没有完美的处理捕获异常之后该做的事情。既没有完美的退出程序。博主在使用网上提供的全局捕获异常之后,不是ANR就是只退出了报错的
2014-12-25 23:49:18
17549
原创 Android开发之Dialog\popupindow\windowManager的区别及自定义方法详解
在Android开发中,有三种可以弹出的窗体可以使用,一种是Dialog,一种是popupindow,还有一种是最原始的方法,我估计也是dialog和popupwindow的实现原理,用windowManger添加自定义view窗体。一、Dialog和popupwindow的区别这两者都是弹窗,但有本质上的区别。Dialog是非阻塞式弹窗,Dialog弹出来后,后台还在做其他事情。
2014-12-23 22:13:29
2686
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人