Android
文章平均质量分 68
fanxiaoyu321
天道酬勤
展开
-
再谈Activity生命周期
随着用户进入、离开、再进入等动作,我们的Activity不停的在其生命周期的几个状态之间来回切换,比如,当用户点击桌面上的应用程序图标时,我们的主Activity被启动,这时,系统会调用一系列的生命周期回调函数来完成Activity的创建及显示工作;当用户切换到另一个Activity的时候,当前Activity的一系列生命周期方法又被调用。在程序的执行过程中,Activity会在其生命周期的各个状原创 2013-11-15 14:14:01 · 845 阅读 · 0 评论 -
Android DNS之惩罚机制
数据结构统计信息同样是基于网卡的,所以理所当然的,这些信息保存在了resolv_cache_info中,该结构中与统计有关的信息如下:struct resolv_cache_info { struct __res_params params; //每个DNS服务器地址都有一个自己的统计信息 struct __res_stats nsst...原创 2018-09-22 20:36:32 · 1535 阅读 · 0 评论 -
Android DNS之查询结果缓存
核心数据结构resolv_cache_info每个网卡都有一个该结构,用于保存该网卡相关的DNS配置信息,以及在该网卡上进行的DNS查询结果缓存信息,系统中所有网卡的该结构信息组织成一个单链表。struct resolv_cache_info { //网卡的netid unsigned netid; //DNS查询缓存结果 Ca...原创 2018-09-21 20:32:55 · 4000 阅读 · 0 评论 -
Android DNS之DNS参数设置
概述ConnectivityService会通过netd将DNS参数设置到解析库的cache中,设置接口是_resolv_set_nameservers_for_net(),后续在DNS查询过程中,解析库会从cache中获取设置的DNS服务器地址。数据结构Android中,将DNS信息保存到了resolv_cache_info中,该结构中与DNS有关的信息如下所示:struct resol...原创 2018-09-20 23:44:31 · 20255 阅读 · 12 评论 -
Android DNS之发送查询报文: res_nsend()
res_nsend()@statp: resolver状态结构@buf:组装好的DNS查询报文@buflen:查询报文长度@ans:用户保存响应报文的缓存区@anssiz:响应报文的长度int res_nsend(res_state statp, const u_char *buf, int buflen, u_char *ans, int anssiz){ int gotsome...原创 2018-09-19 22:32:03 · 2495 阅读 · 0 评论 -
Android DSN之查询域名处理: res_search
res_nsearch()/* * Formulate a normal query, send, and retrieve answer in supplied buffer. * Return the size of the response on success, -1 on error. * If enabled, implement search rules until answ...原创 2018-09-18 23:36:07 · 2086 阅读 · 4 评论 -
Android DNS之getaddrinfo()的实现
这篇笔记分析了库函数getaddrinfo()的代码实现。原型解读int getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res);hostname: 和gethostbyname()的入参hostname相同,要查询的域...原创 2018-09-23 20:27:47 · 7630 阅读 · 7 评论 -
Android DNS之gethostbyname()的实现
原型解读struct hostent *gethostbyname(const char *name);入参字符串name可取的值分为三种类型:十进制数字格式的IPv4地址十六进制数字格式的IPv6地址域名返回值返回值为指向struct hostent类型的指针,调用者显然没有提前分配它,那么该结构一定是有内部实现分配的,所以该函数是不可重入的。struct hostent结...原创 2018-09-17 23:53:41 · 4280 阅读 · 6 评论 -
Android DNS之查询过程分发: nsdispatch()
原型解读struct hostent *gethostbyname(const char *name);入参字符串name可取的值分为三种类型: 1. 十进制数字格式的IPv4地址 2. 十六进制数字格式的IPv6地址 3. 域名对于1和2,根本不需要发起真正的查询,直接内部转换成返回值需要的格式即可。返回值返回值为指向struct hostent类型的指...原创 2018-09-17 00:44:12 · 1189 阅读 · 0 评论 -
Android DNS之查询库函数接口
概述这篇笔记总结下,为了实现域名<–>IP地址、服务名<–>端口号之间的转换,系统到底对外提供了哪些接口。域名<–>IP地址转换域名–>IP地址gethostbyname()struct hostent *gethostbyname(const char *name);getaddrinfo()int g原创 2018-09-17 00:40:12 · 1073 阅读 · 0 评论 -
Android:Activity生命周期
Activity在运行的过程中,是由Activity栈来管理的,当前Activity位于栈顶,所以说一个Activity在生命周期过程中一定会有时处于栈顶(活动状态),有时处于栈中其它位置(非活动状态)。Activity在生命周期中只会有三种状态:Resumed:此时该Activity可视并且可以获得用户焦点,该状态也叫“运行时”状态Paused:此时另一个Activity原创 2013-11-13 14:31:06 · 740 阅读 · 0 评论 -
Android之布局初步(一)
我们知道,一个Activity代表一个屏幕,屏幕中显示的内容就是一个一个的控件,这些控件都是View的子类,其中有一个很重要的子类叫ViewGroup,我们可以将其比作一个容器,其中可以容纳其他的View和ViewGroup,这样,我们就可以通过嵌套来实现任意复杂的界面布局。在这个嵌套结构中,ViewGroup是不可视的,我们平时看到的都是View的子类。这个整体结构可用下图形象表达(该图来自于官原创 2013-11-14 22:15:40 · 572 阅读 · 0 评论 -
Android DNS之查询数据包的hash值
在Android之DNS查询结果缓存中有提到一个DNS查询时的行为:==如果当前已经有一个相同的查询发出,那么后来的查询请求实际上会block,等待前一次的查询返回,如果成功那么一起返回,失败则后面的请求还会及其发起。==这篇笔记就来看看到底是如何判断两个DNS查询请求是不是完全相同的。之所以要分析这个过程,是因为在实际问题定位过程中,如果看到两个对相同域名的DNS查询请求相隔不远,总会有疑问,...原创 2018-10-30 01:54:36 · 760 阅读 · 0 评论