- 博客(16)
- 收藏
- 关注
原创 Android 调试之dmtracedump,方法调用分析
使用dmtracedump可以追溯方法的调用。生成函数调用关系图。命令行输入dmtracedump,如果提示command not found。如下图,说明环境变量没有配置。 配置环境变量: dmtracedump执行文件存在Android sdk 的platform-tools文件夹下 export PATH=$PATH:/Users/wuxinglin/Lib/Android/...
2019-06-04 10:25:57
1012
1
转载 class字节码反编译——指令对照表
> 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1 将int型-1推送至栈顶 0x03 iconst_0 将int型0推送至栈顶 0x04 iconst_1 将int型1推送至栈顶 0x05 iconst_2 将int型2推送至栈顶 0x06 iconst_3 将int型3推送至栈顶 0...
2019-05-01 13:10:26
837
原创 常量池
介绍常量池之前先了解一个命令:javap下面说一下常用指令:javap -s 查看目标类的内部类型签名信息(描述符),包括:字段类型签名,方法的类型签名javap -c 对目标class反编译,可以查看指令的执行过程。javap -v 类的附加信息,可以用来查看常量池,也是我们今天需要用到的命令。现在进入正题—常量池。jvm常量池其实包括两中类型:1.编译时常量池(静态...
2019-05-01 13:04:09
1475
原创 java面试常考点之--类加载
java面试常考点之–类加载字节码中的指令通过javap -c ClassName指令反编译class字节码,查看字节码指令和执行顺序。简单分析指令图中是learn方法的反编译指令和解释,其中#3 #4是符号引用,对应的值(字面量)保存在常量池中。(上篇文章简单分析了常量池,在此不做讨论)字节码指令分类加载存储指令 iload_0 将第一个int变量推到栈顶 fstore_1 ...
2019-05-01 12:38:19
289
原创 ImageView加载图片OOM
开发中给ImageView加载一个高质量图片时,APP抛出了“Canvas: trying to draw too large(840253440bytes) bitmap.”的异常。猜测是图片占用内存太大,超出APP被分配的内存(我用的mate9,APP被分的内存差不多200m),造成了oom。解决方法:1.修改图片分辨率。降低分辨率以减少内存占用,前提是手机展示时不会失真太严重。...
2018-09-07 18:30:41
1089
原创 Vue 注册组件
组件注册方式组件注册分为注册全局组件和局部组件全局组件Vue.component('component_name',{ template:'<div>this is template</div>',})局部组件new Vue({ el:'#root',//root为挂载的元素 components:{ component_name:{...
2018-05-14 16:57:14
845
原创 Vue 入门
Vue使用Vue Api入口Vue的实例作为入口var vm = new Vue({ el:'#rootId' })vm是Vue的实例属性el(element)为Vue实例挂在的元素,其值可以为元素id,或者元素对象。data: Vue实例的数据对象,当数据对象被data绑定,其中的属性就会拥有get和set属性,用来监听数据变化,实时响应。Vue实例可以通过$data属性访问原始数据...
2018-05-14 15:46:13
290
原创 ajax初探
Ajax可以动态,异步的更新网页内容,不需要通过表单提交数据后跳转新页面实现更新(无刷新式更新),使页面更友好,性能更高。优点:支持异步请求。Ajax的核心是JavaScript的XmlHttpRequest对象,通过XmlHttpRequest对象向服务器发送异步请求。XmlHttpRequest对象的方法和属性:onreadystatechange:每次状态改变时触发sta
2017-08-01 10:36:37
361
原创 使用HttpURLConnection通过post请求服务器时,URLEncode编码的必要性
通过Post提交表单数据时,数据类型为x-www-urlencoded,提交到服务器的数据服务器默认是通过URLEncoder.encode()编码过得,所以服务器处理时会用URLDecoder.decode(s)进行解码,此时传输的数据就不能包括一些特殊字符。如+、%2b原因:通过URLEncoder.encode()空格会被编码成+号,+号会被编码成%2B,所以如果包括+,%2B的元数据,
2017-08-01 10:33:10
3819
原创 Android 通过post上传文件--HttpURLConnection实现
最近在做向服务器提交文件,本来用的xutils,使用起来挺简单,代买超不过10行,但是想深入了解一下原理,所以就自己用HttpURLConnection实现文件的上传。无论是浏览器通过表单提交文件,还是APP通过post提交,其实原理都是一样的。APP只要仿照浏览器的表单提交数据的样式去提交文件,服务器就可以解析并处理文件。那就首先来看一下浏览器提交的数据样式和请求头的信息。HTML核
2017-07-31 17:34:43
2590
原创 Failed to crunch file
今天在导入一个演示demo时,Android studio报了如下错误:Error:Error: File path too long on Windows, keep below 240 characters : C:\Users\Administrator.PC-20....Error:Failed to crunch file C:\Users\Administrator
2017-05-24 14:26:55
836
转载 从Instant run谈Android替换Application和动态加载机制
转自http://www.tuicool.com/articles/ZFbaaubAndroid studio 2.0 Stable 版本中集成了 Install run 即时编译技术,官方描述可以大幅加速编译速度,我们团队在第一时间更新并使用,总体用下来感觉,恩…也就那样吧,还不如不用的快。所以就去看了下 Install run 的实现方式,其中有一个整体框架的基础,也就是今天的文章
2016-12-03 21:14:28
1908
原创 webview播放网络视频
根据开发需求,需要在app中加载网络上的视频。本来是挺简单的一件事,webview.loadUrl(视频地址),但是在处理全屏的时候总是失败。下面用代码说话://全屏显示的视图对象 private View mFullVideoView; //一个通知webview退出全屏的回调接口 private WebChromeClient.CustomViewCallbac
2016-10-27 10:33:52
826
原创 Androidstudio不能连接手机测试,adb不能启动
今天启动Android studio 运行程序,不能找到模拟器,连接上真机进行调试,还是找不到。然后重启AS发现提示才知道是ADB的端口5037被其他应用占用,导致其不能启动。通过命令行检查是什么应用占用了5037这个端口。win+R运行cmd启动命令提示符窗口,输入命令netstat -ano |findstr"5037",发现占用端口的进程。通过命令tasklist
2016-10-24 15:08:09
1953
转载 gradle入门
转载Android开发中文站 » gradle入门随着Android Studio越来越完善,更多的开发者舍弃掉Eclipse。但是新的IDE与以往的Eclipse有很大区别,这导致部分开发者望而却步,其中一个大家觉得比较麻烦的是Android Studio采用的新的构建系统,gradle。那么这篇文章我将对gradle进行一个简单介绍(主要讲gradle配合Android Studi
2016-10-23 03:02:26
405
原创 setOnScrollChangeListener不兼容
开发中为scrollview设置监听,setOnScrollChangeListener报找不到类的错误,原来是这个方法是API23才出来的,没有做向下兼容,所以在低版本运行就会报错。解决这个问题有两个方法:1. 解决方案是使用ViewTreeObserverscrollView.getViewTreeObserver().addOnScrollChangedL
2016-10-18 18:24:50
8902
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人