- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 SystemUI初始化加载流程
1.1System启动,ActivityManagerService在systemReady时启动SystemUIService: frameworks\base\services\java\com\android\server\SystemServer.java public static void main(String[] args) { new System
2017-01-19 09:46:07
1135
原创 深入理解Android Binder机制的几点
Android系统Binder机制中的四个组件:Client,Server,Service Manager和Binder驱动程序。1. Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中2. Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Se
2017-01-18 10:14:15
325
转载 Framework分析-Application的onCreate
ActivityThread并不是一个Thread,而是一个单纯的Java类,查看一下 ActivityThread 的源码final class ActivityThread,并没有继承Thread或者实现Runnable接口,ActivityThread 其中包含 main 方法,程序的入口地方,怎么看出来的呢? 我们开发过程中总会出现程序异常信息,细心看一下log,查看最下面的几行,
2016-12-01 14:52:53
879
转载 源码分析:onAttach, onMeasure, onLayout, onDraw 的顺序。
从前文《 源码解析:dialog, popupwindow, 和activity 的第一个view是怎么来的?》中知道了activity第一个view或者说根view或者说mDecorView 其实就是一个FrameLayout,以及是在系统handleResume的时候加入到系统windowManager中的,并由framework中的ViewRootImpl 接管,通过ViewRootImpl
2016-12-01 11:24:35
509
原创 关于Android Binder机制
binder通信是一种client-server的通信结构,从表面看,是client通过获得一个server的代理接口,对server进行直接调用,实际上,代理接口中定义的方法与server中定义的方法是一一对应,client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Parcel对象,代理接口将该parcel发送给内核中的binder driver,server会
2016-10-13 15:31:58
277
原创 关于自定义indexbar使用paint画笔实时显示索引listview的header首字母和header对应的列表首个字符
开发联系人模块,遇到自定义view的问题,并且是使用paint画笔去绘制,关于字母索引列表的问题网上有很多基础的教程,但是遇到特殊定制的view和功能,还是需要开发人员自己去想办法解决。描述一下:就是要在绘制好右侧字母索引的同时,弹框展示字母和字母对应的姓名的姓氏列表:如图
2016-09-24 11:00:44
442
原创 关于Android沉浸式状态栏字体颜色和图片背景自适应变化
最近开发Android音乐,遇到关于沉浸式状态栏的问题,当音乐封面背景图片和状态栏融合到一起时,如果状态栏的字体设置为白色或者浅色,这时背景图片的颜色也是白色,导致状态栏的字体几乎看不到的问题。如下图这时,如果只是单纯的设置状态栏的字体颜色,这样是不行,因为每播放一首歌,他得封面是不同的,有的颜色深,有的颜色浅,这时候要去判断背景图片的bitmap值,来设置不同的状态栏字体颜色,即所谓的自适应
2016-09-24 10:37:26
5390
原创 关于AsyncTask影响文件列表加载速度的问题
1.首先AsyncTask有两个主要功能,即:与UI界面的交互,和对线程的调度管理。对于线程的调度,他会创建一个进程作用域的线程池来管理要运行的任务,就是说当你调用了AsyncTask的execute()后,就把任务交给线程池,由线程池来管理创建线程和运行线程。对于API10以前的版本,内部的线程池限制是5个,同时只能有5个线程运行,超过的线程只能等待,等待前面的线程某个执行完了才被调度和
2016-07-16 15:54:02
427
原创 Anroid Touch 事件传递机制
Android系统中的每个ViewGroup的子类都具有下面三个和TouchEvent处理密切相关的方法:1.public boolean dispatchTouchEvent(MotionEvent ev) 用来分发TouchEvent2.public boolean onInterceptTouchEvent(MotionEvent ev) 用来拦截TouchEvent3.
2016-06-25 16:44:52
291
原创 Android内存优化
OOM:内存泄露可以引发很多的问题:1.程序卡顿,响应速度慢(内存占用高时JVM虚拟机会频繁触发GC)2.莫名消失(当你的程序所占内存越大,它在后台的时候就越可能被干掉,反之,内存占用越小,在后台存在的时间就越长)3.直接崩溃(OutOfMemoryError)Android内存面临的问题:1.有限的堆内存,原始只有16M2.内存大小消耗等根据设备,操作系统等级
2016-03-21 16:55:36
329
原创 Android如何高性能编程
如何实现Android的高性能编程,就涉及到Android的内存优化,算法优化,Android的界面优化,Android指令级优化,以及Android应用内存占用分析,还有其他的知识。作为开发人员,算法和数据结构永远是我们最先考虑的事情,同时还要记得两个基本原则:1.不要做不必要的事;2.不要分配不必要的内存。1)内存优化Android系统对每个软件所能使用的RAM空间进行了限制(例如
2016-03-21 15:13:45
1462
原创 android开发之流量监控
Android流量监控主要是有两种方法:1.抓包这个方法获取的流量更加精准,但是难度应该大点。2.读取Linux本地文件Android是基于Linux的一个操作系统在Android中,用RootExplorer去查看系统文件的话,与流量监控相关的会有这么几个文件/proc/net/dev这个文件中具体记录的暂时不是非常清楚,可能是整个系统的一个流量情况。/proc/ui
2016-03-21 11:29:08
1167
原创 四种方法解决ScrollView嵌套listview的滑动冲突问题
在工作中,曾碰到过多次scrollView嵌套listview的问题,网上的解决办法很多,但大都是杂而不全,在这里,我从使用scrollview嵌套listview结构的原因、这个结构碰到的问题、几种解决方案和优缺点比较,这4个方面来给大家阐述、分析、总结。其实不光是listview,其他继承自AbsListView的类也适用,包括ExpandableListView、Gridview等,为了
2016-03-11 16:34:05
1821
转载 Android开发性能优化
大致罗列11种Android开发性能优化的方法,合理的使用它们可以让Android应用迅疾如飞。1.http用gzip压缩,设置连接超时时间和响应超时时间。http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读。2.listview性能优化复用convertView在getItemView中,
2015-12-25 09:11:37
280
转载 Android的socket通信
Android通过socket和服务器通讯,是一种比较常用的通讯方式,大概可以有以下的思路:1.开启一个线程发送消息,SocketOutputThread消息是放在队列里的,当有消息后,进入队列,线程唤醒,发送消息,并反馈发送是否成功的回调2.开启一个线程接收服务器消息SocketInputThread为了防止一直收数据,浪费电池的电,采用NIO的方式读socket的数据,这个是本
2015-12-24 10:46:23
310
转载 Android蓝牙开发流程
首先,要操作蓝牙,先要在Androidmanifest.xml里加入权限然后,看下API,Android所有关于蓝牙开发的类都在Android.bluetooth包下,只有八个类:BluetoothAdapter,BluetoothClass,BluetoothClass.Device,BluetoothClass.Device.Major,BluetoothClass.Servi
2015-12-23 09:32:32
433
转载 Android Framework探索
1.Android系统的层次如下:Android手机:内核层(基于Linux2.6开发),系统层,应用框架层,应用层内核层:内核增强,安全,内存管理,进程管理,网络栈,驱动模块系统层:运行库,程序库应用框架层:View,ContentProviders,Resource Manager,Notification Manger,Activity Manager应用层:在应用框架层
2015-12-22 09:56:24
686
转载 Android消息处理机制
Android的消息驱动机制主要包含这几个概念:消息的表示,消息的队列,消息循环,消息处理。下面分别介绍这几个概念:Message就是消息的表示,MessageQueue是消息队列,Looper是用于循环取出消息并进行处理的,Handler是消息循环从消息队列中取出消息后进行处理。平常最常使用的就是Message和Handler,如果用过HandlerThread或者自己实现类似Handler
2015-12-18 13:57:01
329
原创 java多线程的内存可见性探索_1
可见性:一个线程对共享变量值得修改,能够及时的被其他线程看到。共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量。Java内存模型(JMM):Java memory Model描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取出变量这样的底层细节。所有的变量都存储在主内存中,每个线程都有自己独立
2015-07-11 15:00:26
359
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人