关闭

SharedPreferences 分析 --- 之二

5,提交 5.1 commit commit方法的逻辑如下, 1, 将数据更新到内存 MemoryCommitResult mcr = commitToMemory(); 2, 将内存数据同步到文件 SharedPreferencesImpl.this.enqueueDiskWrite( mcr, null /* sync write on this t...
阅读(59) 评论(0)

SharedPreferences 分析 --- 之一

概述: SharedPreferences(简称SP)是Android中很常用的数据存储方式,SP采用key-value(键值对)形式,  主要用于轻量级的数据存储, 尤其适合保存应用的配置参数, 但不建议使用SP 来存储大规模的数据, 可能会降低性能.以下分析都是基于android 6.0 SP采用xml文件格式来保存数据, 该文件所在目录位于/data/data//shared_pre...
阅读(45) 评论(0)

Broadcast 分析 --- 之二

3,发送广播 对应不同的广播,发送方法如下: public void sendBroadcast(Intent intent, String receiverPermission) public void sendOrderedBroadcast(Intent intent, String receiverPermission) public void sendStickyBroadcast(...
阅读(86) 评论(0)

android ANR源码分析 --- 之四

5,小结 Timeout时长 对于前台服务,则超时为SERVICE_TIMEOUT = 20s; 对于后台服务,则超时为SERVICE_BACKGROUND_TIMEOUT = 200s 对于前台广播,则超时为BROADCAST_FG_TIMEOUT = 10s; 对于后台广播,则超时为BROADCAST_BG_TIMEOUT = 60s; ContentProvider超时为CONT...
阅读(53) 评论(0)

android ANR源码分析 --- 之三

4, inputDispatching Timeout 当input事件处理得慢就会触发ANR. ANR时间区别便是指当前这次的事件dispatch过程中执行findFocusedWindowTargetsLocked()方法到下一次执行resetANRTimeoutsLocked()的时间区间. 在InputDispatcher.cpp的事件分发过程中, 如果是Key event事件,则会...
阅读(71) 评论(0)

android ANR源码分析 --- 之二

2, BroadcastQueue Timeout 触发时机: BroadcastQueue中的mHandler收到BROADCAST_TIMEOUT_MSG消息时触发. 在广播的流程中,匹配广播之后,最后AMS会调用BroadcastQueue的processNextBroadcast方法进行处理。processNextBroadcast方法主要逻辑如下, 1,首先处理一般广播(并行广播)...
阅读(57) 评论(0)

android ANR源码分析 --- 之一

概述: ANR(ApplicationNot responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间 能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择 继续等待或者Force Close。 那么哪些场景会造成ANR呢? 1,Service Timeou...
阅读(42) 评论(0)

Socket请求分析

1, Socket 相对Http来说, Socket比较简单。 Proxy proxy = new Proxy(Proxy.Type.SOCKS,mSocketAddress); mSocket = new Socket(proxy); mSocket.connect(new InetSocketAddress("•••", •••)); mOutput = mSocket.getOutpu...
阅读(208) 评论(0)

Okio框架分析--之二

4.2 SegmentPool SegmentPool就是片段池,可以说是管理Segment。三个变量如下, static final long MAX_SIZE = 64 * 1024; // 64 KiB. static Segment next; static long byteCount; MAX_SIZE表示片段池的最大容量,表示片端池中最多可以容纳8个片段,next将片段连接成...
阅读(584) 评论(0)

Okio框架分析--之一

4.Okio 其实,上面分析的大部分类都是位于external\okhttp\okio\okio 路劲下, okio是square公司开发的开源库。 4.1 Segment Segment是片段的意思, Segment定义如下, final class Segment { 实际上类似于一个双向链表,部分变量如下, static final int SIZE = 8192;// Segm...
阅读(595) 评论(0)

OutputStream/InputStream

3,OutputStream/InputStream 在开发时,在获取HttpURLConnection对象之后,一般首先调用其connect方法,然后获取OutputStream, 这样就可以往OutputStream里面写值了。最后获取InputStream对象并进行相关操作。 conn.connect(); mOutput = conn.getOutputStream(); mOutp...
阅读(181) 评论(0)

connect方法分析

2,connect方法 HttpURLConnectionImpl的connect方法如下, public final void connect() throws IOException { initHttpEngine(); boolean success; do { success = execute(false); } while (!succ...
阅读(508) 评论(0)

HttpURLConnection对象的获取

1,获取HttpURLConnection对象 获取HttpURLConnection对象有不同的方法. 1,通过URL对象获取, getUrl = new URL("http://•••/"); mSocketAddress = new InetSocketAddress(•••,mProxyPort); Proxy proxy = new Proxy(Proxy.Type.HTTP,mS...
阅读(129) 评论(0)

AsyncQueryHandler分析

作用: 对DB数据库进行异步操作,加快其数据处理的速度. 例如几千联系人的数据读取,按正常的处理速度会非常的慢, 使用AsyncQueryHandler,这就会大大的加快速度,增加用户的良好体验。 为什么会有AsyncQueryHandler? 1,若不用AsyncQueryHandler,直接在UI 线程调用ContentResolve去操作数据库,比如查询.如果数据库的数据很少, 无需...
阅读(101) 评论(0)

通话记录分析

1,通话记录 1.1 初始化 在Dialer中,通话记录信息都是通过CallLogActivity 显示,实际上,真正完成的是CallLogFragment 。CallLogActivity的内部类 ViewPagerAdapter的getItem方法如下, public Fragment getItem(int position) { switch (getRtlPositio...
阅读(118) 评论(0)
300条 共20页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:122181次
    • 积分:4099
    • 等级:
    • 排名:第8305名
    • 原创:300篇
    • 转载:0篇
    • 译文:0篇
    • 评论:13条
    最新评论