[转]从源码角度分析java层Handler机制 在Android中,当要更新ui的时候,我们必须要在主线程中进行更新,原因时当主线程被阻塞了5s以上就会出现anr异常,会导致程序崩溃。所以一些耗时的操作必须要放在子线程中,但是在子线程中又不能做更新ui的操作,所以为了解决这个问题,Android设计了handler机制,handler的出现建立起了主线程与子进程之间的通信桥梁,使得ui更新问题得到改善,下面就来剖析一下handler。Activ...
记录一下这些年看过的开发相关书籍 目录:android appAndroid SDK开发范例大全第3版 余志龙 人民邮电出版社第一行代码第2版 郭霖 人民邮电出版社Android群英传 旭宜生 电子工业出版社安卓framework深入理解Android内核设计思想上,下 林学森 人民邮电出版社Android框架揭秘 [韩]金泰延 人民邮电出版社Android开发艺术探索 任玉刚 电子工业出版社Android系统源代码情景分析 罗升...
[转]Python中的正则表达式 目录:Re模块正则表达式模式特殊元素正则表达式实例Re模块正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。import rere.match #从开始位置开始匹配,如果开头没有则无re.search #搜索整...
[转]request处理cookie的两种方法 目录:1 获取cookie2 使用cookie2.1 cookies是字典格式2.2使用requests.session,2.3 headers中加cookie。python提供了一个非常强大的第三方库requests处理http协议。今天讲的重点就是如何使用requests处理cookie。1 获取cookie#导入requests包import requeststargetURL ...
[转]python logging模块 目录:1 logging模块简介2 logging模块使用2.1 基本使用2.2 将日志写入到文件2.2.1 将日志写入到文件2.2.2 将日志同时输出到屏幕和日志文件2.2.3 日志回滚2.3 设置消息的等级2.4 捕获traceback2.5 多模块使用logging3 通过JSON或者YAML文件配置logging模块3.1 通过JSON文件配置3.2 通过YAML文件配置1 loggi...
[转]Predeclared core register names 2.10 Predeclared core register namesMany of the core register names have synonyms.The following table shows the predeclared core registers:Table 2-2 Predeclared core registersRegister namesMe...
修改L版本android.jar使其包含增加的api 在开发中时常会遇到要用到android隐藏api的情况,通常的做法是通过反射去调用,但是反射带来性能上的影响,代码也不够直观,我更偏爱直接使用那些api。于是这就是本文的开始,自己改造一个android.jar,使其包含隐藏api其实步骤很简单,因为android系统内带的framework.jar已经包含了隐藏api,只需将其抽取并放到android.jar内就好了,整理一下就是:从指定...
android脱壳之dvmDexFileOpenPartial分析 目录:逆向加壳apk的典型方法流程分析逆向加壳apk的典型方法我们知道,逆向加壳apk的时候,可以对libdvm.so中的int dvmDexFileOpenPartial(const void* addr, int len, DvmDex** ppDvmDex)函数打断点,然后使用下面的程序根据addr和len将内存中的dex文件dump到文件中。// dump memory dex to...
android中SELINUX规则分析和语法简介 目录:SELINUX简介查看SELINUX权限1. 进程2. 文件如何配置selinux1.基本语法A. 上下文描述文件B. 策略文件te2.举例:生成规则文件的方法SELINUX简介SELINUX是可以理解为一种android上面的安全机制,是有美国国家安全局和一些公司设计的一个针对linux的安全加强系统,我们可以通过配置SELINUX的相关policy,来定制自己的手机的一些权限,比如,...
[kk]投影息屏的功能开发 目录:需求分析投影息屏的功能说明系统提供的接口代码提交yx_a80_frameworksyx_a80_deviceyx_a80_licheeapp端调用的方法遇到的问题备注:需求分析投影息屏的功能说明机器人在投影播放视频时,面部平板页面与投影页面保持一致,且处于常亮状态。若在比较暗的环境下观看,极大影响了观看投影的质量,同时也会分散观看人的注意力。解决方案是在开启投影后,可机器人面部平板可自...
[转]Android的ThreadLocal的工作原理 Looper中有一个特殊的概念,那就是ThreadLocal,ThreadLocal并不是线程,它的作用是可以在每个线程中存储数据。大家知道,Handler创建的时候会采用当前线程的Looper来构造消息循环系统,那么Handler内部如何获取到当前线程的Looper呢?这就要使用ThreadLocal了,ThreadLocal可以在不同的线程之中互不干扰地存储并提供数据。ThreadLocal...
Extract src.zip from JDK Installer Since Oracle stopped shipping src.zip inside of tools.zip on the release 45 of JDK 8, this tutorial will show you how to extract src.zip from JDK installer.Download the JDKVisit this link to downloa...
[转]java泛型中?和T的区别 在代码中经常会看到这样的函数public static void printColl(ArrayList<?> al){ Iterator<?> it = al.iterator(); while(it.hasNext()) { System.out.println(it.next().toString())...
[转]select/poll/epoll对比分析 目录一、select二、poll三、epoll3.1 epoll_create()3.2 epoll_ctl()3.3 epoll_wait()四、对比select/poll/epoll都是IO多路复用机制,可以同时监控多个描述符,当某个描述符就绪(读或写就绪),则立刻通知相应程序进行读或写操作。本质上select/poll/epoll都是同步I/O,即读写是阻塞的。一、select原型:...
[转]Handler的运行机制 目录一. Handler的主要作用二. Handler的基本使用二. Handler的运行机制(kk源码解读)1. Handler.sendMessage(msg)做了些什么?2. 从ActivityThread.main()分析2.1.首先我们看Looper.prepareMainLooper()做了些什么2.2. Looper.loop();2.3. 资源回收处理 msg.recycle(...
[转]Android限制只能在主线程中进行UI访问的实现原理 目录Android限制只能在主线程中进行UI访问Thread的实现Android Thread 的构造方法Android Thread 的start()方法如何在我们自己的代码中去检测当前Thread是不是UI线程呢?Android限制只能在主线程中进行UI访问我们知道,Android中规定了访问UI只能在主线程中进行,如果在子线程中访问UI的话,程序就会抛出异常Only the origin...
枚举实现单例 单例模式的作用:保证一个类只有一个实例,并提供一个访问它的全局访问点常用于重量级对象,这个类创建对象是耗时,耗内存和复杂的单例模式的好处 保证对象在内存中仅有一个,减少内存开销单例模式枚举方式:立即加载、线程安全、实现简单、防止反序列化例子public class DBConnection { public static void main(String[] args) throws ...
[转]arm中r12(IP)的用途 近来在维护一个年久失修的程序, 包括应用,库文件以及一个linux device driver.很久以前程序是用arm-linux-gcc 3.4.3编译的。而最近当换用arm-linux-gcc 4.1.1进行编译的时候发现程序神奇的无法运行了。经过尝试,发现当我们使用shared library形式编译程序后,它便无法正常运行。而如果将库和应用static linking在一起后就能得出正确结...
[转]IBinder对象在进程间传递的形式 命题当service经常被远程调用时,我们常常用到aidl来定一个接口供service和client来使用,这个其实就是使用Binder机制的IPC通信。当client bind service成功之后,系统AM会调用回调函数onServiceConnected()将service的IBinder传递给client, client再通过调用aidl生成的asInterface()方法获得serv...