![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
疑难杂症
跑步_跑步
恐惧源于无知,勤奋可以补拙
展开
-
使用wireshark分析TLS
原文链接:https://www.cnblogs.com/lv6965/p/7859925.html1.基本概念SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据转载 2020-12-22 11:03:37 · 3045 阅读 · 0 评论 -
AOP切面编程
Android AOP面向切面编程详解Android AOP:最简单&粗暴(使用与原理)讲解AspectJ——切入点语法(3)之捕获类和对象构造上的连接点AspectJ自定义注解之埋点(三)转载 2020-11-06 17:41:49 · 93 阅读 · 0 评论 -
Glide学习笔记
Glide最全解析比较全面的介绍Glide使用,通过源码分析执行流程,自定义模块,图片转换等功能关于bitmap的缓存处理方面的知识:Glide篇_01关于Bitmap缓存Glide缓存机制缓存源码分析关于bitmap的复用处理方面的知识:Glide(四):强大的图片缓存池和复用机制解析复用流程简单来说,缓存是将数据存储起来,下次需要时就不用重新加载数据,直接拿来即用,作用是加快加载速度、避免相同的数据占用空间,降低内存占用;复用的意思是重新使用,将已经不..原创 2020-06-29 17:34:29 · 142 阅读 · 0 评论 -
Java线程的6种状态及切换
Java中线程的状态分为6种。1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态...转载 2020-02-29 14:30:32 · 135 阅读 · 0 评论 -
Ubunut下apk反编译文档
原文:http://blog.csdn.net/x2017x/article/details/738257521.在linux系统下反编译用到的工具: dex2jar,jd-gui,apktool2.首先下载三个软件包https://pan.baidu.com/s/1b9lhcq,https://pan.baidu.com/s/1o8K8lWQ,https://pan.baidu.com/...转载 2018-02-26 17:40:19 · 269 阅读 · 0 评论 -
APP耗电分析工具搭建
大家都知道,进行耗电分析,google给我们提供了Battery Historian这个工具来进行图形化的分析。1、V1版本使用相对简单:1)首先执行重置电量命令,清除之前的电量记录:adb shell dumpsys batterystats --reset保证手机电量为满格,然后拔掉usb(usb链接着会进行充电),操作应用一段时间后,使用命令获取电量信息:adb原创 2018-02-05 18:02:04 · 786 阅读 · 0 评论 -
设置进行remount后还是提示Read-only file system的解决方法
据说在6.0后,userdebug版本的手机进行remount后还是会出现删除文件没权限的问题。解决方案呢:1、进行root :adb root2、继续执行命令:adb disable-verity 3、重启手机:adb reboot4、再次root 然后执行remount。应该就可以删除文件了具体可参考:android-problem——remount of /syste转载 2018-02-05 10:24:00 · 9060 阅读 · 1 评论 -
gradle配置升级
一般项目中的gradle配置主要有两个地方:1、project下的build.gradle文件:这里显示的是gradle插件的版本号,一般是跟随studio的版本号对应的。2、在工程的根目录下,有个文件gradle-wrapper.properties,该文件显示的是gradle构建的版本号:gradle插件和gradle版本号是有一一对应关系的,具体关系在官网中查转载 2017-11-09 15:44:04 · 507 阅读 · 0 评论 -
Android studio打包混淆编译的时候出现异常:transformClassesAndResourcesWithProguardForRelease
具体异常信息截取如下:Browser/build/intermediates/exploded-aar/com.google.android.gms/play-services-analytics/7.8.0/jars/classes.jar(;;;;;;**.class)] (Duplicate zip entry [com/google/android/gms/ads/a/a.clas原创 2017-10-21 14:59:23 · 4701 阅读 · 1 评论 -
lib_A启动lib_B的activity即两个依赖工程互相启动组件
我有一个工程C,同时用到了lib_A和lib_B,某种情况下,lib_A需要调用到lib_B的某个activity.正常情况下,我们c要使用lib_b的activity,直接显示调用这个activity就行,因为可以知道这个activity的名称,并且lib_b是作为lib依赖到主工程c中的,向这样直接使用:intent.setComponent(new ComponentName(thi原创 2017-08-29 10:04:30 · 816 阅读 · 0 评论 -
view.post执行时机以及可能产生的内存泄露问题
两篇主要博文:通过View.post()获取View的宽高引发的两个问题:1post的Runnable何时被执行,2为何View需要layout两次;以及发现Android的一个小bug这一篇详细讲解了view.post方法的调用流程,以及在该方法中获取view的宽高的实例分析。里面所说的android的小bug在api 25已经被修复,具体看代码:public boolean ...转载 2017-08-28 20:19:17 · 1970 阅读 · 0 评论 -
使用最新的Android studio 2.3.3创建新工程时出错了
当前的studio使用的是gradle 3.3 版本,这个目前在studio目录和./gradle目录已经配置好了,所以可以排除不是gradle配置的问题.由于我的build-tool升级到了26.0.1,然后sdk版本默认使用的是26的.这样创建新工程的时候,首先是出现这个问题:java.io.IOException: Cannot run program "/home/androi原创 2017-08-24 17:00:46 · 1807 阅读 · 0 评论 -
从浏览器打开一个本地应用的回退栈问题
1、首先,先理一下回退栈的问题。开机启动后,Home(Launcher)所在的Activity在整个回退栈的栈底。从Launcher上的图标点击进入一个应用(Activity)时,默认在启动整个Activity的Intent的flag里面加入了NEW_TASK标记,也就是说从launcher启动的Activity默认会在一个新的Task里面。比如我们启动了一个应用,AB原创 2017-06-13 19:00:14 · 1455 阅读 · 0 评论 -
WebView重定向和回退栈的问题,goBack不会回退的问题
原文:http://blog.csdn.net/qq_19729823/article/details/70184623亲测很有效,原文:1.问题描述最近有很多人问我为什么webview加载一个网页,执行了goback网页不能返回的问题,我特此来为那些有问题的或者说有遇到这个问题不知道怎么下手解决的,可以看看下面的解答,或许会对你有所帮助吧。2.问题原因webview执行goback为什么不能返回...转载 2018-02-28 11:36:27 · 5986 阅读 · 1 评论 -
Android使用commons-codec-1.6进行数据加密的过程中出现的异常
导入从官网下载的这个包,编译时不会出错。但是运行时就会出现这个错误:NoSuchMethodError: No static method encodeHexString([B)Ljava/lang/String这篇文章给出了解释:https://my.oschina.net/zhibuji/blog/115463大概意思就是说,Android本身也有同样的包,只不过同样的类里面的方法比较老旧,程...转载 2018-03-02 10:41:08 · 1468 阅读 · 0 评论 -
Activity的启动流程分析
流程较为复杂,可参看这几篇文章:Activity启动过程分析Android Launcher 启动 Activity 的工作过程 【凯子哥带你学Framework】Activity启动过程全解析 Android进阶——Android四大组件启动机制之Activity启动过程...转载 2019-04-09 15:29:55 · 249 阅读 · 0 评论 -
AIDL跨进程通信中的,传递自定义类型参数的修饰符in,out,inout的区别
如下文章用实例测试了in,out,inout的区别:Android 深入浅出AIDL(一)全文如下:前言本文主要讲述AIDL作用以及如何快速上手AIDL项目简介A [android]I [Interface]D [Definition]L [Language]Android接口定义语言。作用:方便系统为我们生成代码从而实现跨进程通讯,仅此而已。(玉刚老师...转载 2019-04-12 16:11:46 · 1444 阅读 · 0 评论 -
ActivityStackSupervisor,ActivityStack,ActivityRecord,TaskRecord的关系
在学习activity的启动流程的时候,经常会碰到这几个类的身影,特别是在AMS中,ActivityStackSupervisor和ActivityStack对象的调用链经常切来换去的,比叫绕。下面这篇文章就是梳理了下这几个类的关系。ActivityRecord、TaskRecord、ActivityStack以及Activity启动模式详解1.简介先来张简单的关系图:...转载 2019-04-11 10:50:54 · 4165 阅读 · 1 评论 -
从源码处理一理Retrofit的异步网络请求如何把结果切换到主线程
前提,需要具备的知识点是:动态代理,反射,注解。场景:某日面试的时候被问道,Retrofit异步网络请求是怎么把结果返回给主线程的?答曰:具体原理不是很清楚,最后应该是通过handler把结果发送到主线程的吧。。。问:你确定吗?真是handler吗?这一问把我问懵逼了,心里在想Android世界里把结果在线程间切换最好用的不就是Handler吗。难道还有其他更好的方式。因为自己确实...原创 2019-01-28 19:05:08 · 7274 阅读 · 3 评论 -
面试集锦:关于AIDL传递对象
问:AIDL传递的自定义对象,需要该对象实现Parceable接口,并在里面实现read和write方法,并且read和write的执行顺序是需要一致的,否则就会出错。那么当我存在一个客户端需要增加和改变该对象的属性,而另一个客户端保持原来的对象的属性的时候,该怎么设计?通过什么方式来实现?一般情况下,AIDL接口的对象属性改变之后,我们需要通知所有使用者进行相应的变更,也就是说服务端和客户端...原创 2019-01-24 17:30:38 · 573 阅读 · 0 评论 -
gradle导入新的依赖后各种问题
有时候导入一个新库compile'com.libertybrowser:affiliatetrigger:2.0.1'后会gradle构建的时候发生这种错误:Process 'command '/home/meizu/android/sdk/build-tools/25.0.1/aapt'' finished with non-zero exit value 1网上说是库依赖有冲...原创 2019-01-24 17:21:50 · 9620 阅读 · 0 评论 -
网络请求发生javax.net.ssl.SSLHandshakeException异常的情况
在使用volley和okhttp的时候,访问https的网站,经常会碰到一个异常就是javax.net.ssl.SSLHandshakeException,大致就是证书相关的异常。发生了好几次。先是怀疑是不是访问的网站是自签名网站,即没有在CA进行认证。一般这种情况下会报的异常是这样的:javax.net.ssl.SSLHandshakeException: java.security.c...原创 2018-05-22 15:32:26 · 78421 阅读 · 2 评论 -
WebView造成的内存泄露
今天在检测内存泄露的时候,发现有一个activity的泄露是这样的:Browser是继承自Application的类,在自己的这个类里面看了下,没有mComponentCallbacks这个成员变量,那么猜想可能是在父类Application中,看了下源码,结果真的是这个类里面还有注册和反注册:从上面内存泄露的调用栈来看,就是application里的成员变量,持有了一个a...转载 2018-05-14 17:39:20 · 5155 阅读 · 0 评论 -
记一次WebView使用异常,点击搜索引擎页内的超链接,无法跳转到相应的页面
事情是这样的,有业务需求需要使用yandex(www.yandex.ru)这个搜索引擎搜索内容,在自己的activity里面创建了一个webview,webview load这个搜索引擎搜索关键字(随便一个关键字都可以),大概界面如下:随便点击其中的链接项,正常情况下希望能load出具体的网页,并且正常情况下,如果我们复写了WebViewClient那么必然会调用shouldOverrideUrl...原创 2018-03-27 17:51:16 · 3882 阅读 · 0 评论 -
从桌面图标启动一个LauncherMode为标准模式的主activity为什么不会重复创建多个实例
一般我们主activity是能显示在桌面图标上的程序入口,并且默认情况launchMode是standard模式。一般我们使用startActivity的时候,如果启动目标activity是standard模式的话,每启动一起就会创建目前activity的实例,也就是说同一个task栈中会出现多个目标activity。但是为什么我们的launcher应用点击一个应用图标的时候,为什么不会创原创 2017-07-27 12:40:14 · 1363 阅读 · 0 评论 -
并发容器
1、CopyOnWrite容器:写时复制,也就是说当我们在容器里面增加元素的时候,会拷贝一份当前容器的元素生成一个新的容器,然后往这个新容器中添加新元素,之后再把这个新容器赋值给旧容器,也就是说原来的容器指向了这个多出一个元素的容器。从CopyOnWriteArrayList的add方法中可以看出:private transient volatile Object[] elements;原创 2017-07-26 17:09:07 · 254 阅读 · 0 评论 -
线程、多线程、线程池
依旧是简书上同一个作者的文章。感觉讲的挺详细的。mark一下文件链接:http://www.jianshu.com/p/b8197dd2934c转载 2016-04-21 17:26:11 · 480 阅读 · 0 评论 -
反射、注解与依赖注入
简书上的这篇文章感觉讲的挺好的,不过最后两个注解和依赖注入讲的有点宽泛,不知是不是我理解能力不行O__O "…文章链接http://www.jianshu.com/p/24820bf3df5c转载 2016-04-21 17:24:16 · 1059 阅读 · 0 评论 -
注解+反射的使用
转载自文章:java中注解的使用与实例以下是原文内容:--------------------------------------------------------------------------------------------------------------------------------------java 注解,从名字上看是注释,解释。但转载 2016-04-20 15:50:43 · 448 阅读 · 0 评论 -
纯干货,鹅厂工程师给出的从手机QQ快速pad化的实现方案思路
值得一看,让我大开眼见啊!感叹大牛们的力量原文链接:Android APP 快速 Pad 化实现(出处: Bugly)转载 2016-03-18 16:06:02 · 1464 阅读 · 0 评论 -
自定义RecycleView实现TV应用上的item焦点获取以及设置当前选中的item居中
RecycleView是个强大的控件,能代替ListView,GridView,还能实现瀑布流,还能实现横向ListView,只需要一句代码就能使纵向ListView变成横向的(主要实现就在布局管理器的选择上了)。其功能用法这里不再赘述,有很多资料可供大家学习。目前所在TV应用,经常使用到横向的列表。实现横向列表也有多种方式,Gallery,horizontalscrollview原创 2015-12-07 18:03:35 · 23983 阅读 · 8 评论 -
记录Android Studio项目提交到github上的出错处理
首先是按照网上的教程进行了一次提交,具体见http://web.gxzj.com.cn/News.aspx?id=325505记得当时出现过这个错误Can't connect to repository from configured remote. You could want to check .gitconfig不能连接到远程仓库,需要检查配置文件。结果我顺手点了个yes原创 2015-12-08 11:01:07 · 4312 阅读 · 7 评论 -
fragment或adapter中使用LayoutInflater加载布局时出现的问题
一般情况下,我们在fragment或是adapter中加载布局都是如此使用:inflater.inflate(R.layout.fragment_recommend,container,false);其中false意思为:把布局添加到父视图中,并保留父视图中的其他视图;而infate方法也可以省略boolean 参数,而如果省略了Boolean变量,而container不为空的原创 2015-12-25 17:27:59 · 4640 阅读 · 0 评论 -
RecycleView在TV应用中的焦点问题
最近想使用RecycleView(姑且简称为RV)来替换实现横向的ListView,这是非常简单的,直接使用布局管理器设置成横向final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayout原创 2015-12-02 14:16:02 · 11058 阅读 · 5 评论 -
setvisibility(view.gone)失效问题
当view设置了animation后,在进行setVisibility(view.gone)不起作用,需要在设置可见度之前,clearanimation。具体参见Android的setVisibility(View.GONE)无效的问题及原因分析原创 2015-12-11 10:26:59 · 6973 阅读 · 0 评论 -
Android TV ListView通过遥控器上下键,平滑移动item
项目中有这样一个需求,ListView列表里面的Item选中项(即焦点所在item),需要始终保持在LsitView的中间位置,即不管是按遥控器下键还是上键,焦点所在的item必须能移回到整个listView的居中位置。如图中所示:默认情况下,当我们按下键选择item的时候,焦点会一直往下走,当选择到当前ListView中可视的最后一个item的时候,焦点就会固定在最后一个原创 2015-09-21 17:29:35 · 8811 阅读 · 4 评论 -
解决ADT Eclipse项目的Preference中,Java Compiler下没有Annotation Processing
收藏一下今天遇到的问题,使用注解的时候,eclipse没找到相应的选项很多做安卓开发的跟我一样,用的IDE可能都是从谷歌安卓官网上下载的ADT Bundle的Eclipse吧,确实这样很方便,解压出来就直接能用。但是前段时间遇到一个问题,本来打算用一下ButterKnife这个注入框架,但不光是把jar包扔进项目libs文件夹中就完了,还要求在项目右键的preference里找转载 2016-04-22 14:36:32 · 941 阅读 · 0 评论 -
重新梳理一下自定义Toast的用法,设置想要的位置,自定义宽和高,自定义显示时间等
之前在自定义Toast的过程中走了不少弯路,不是去折腾其子布局,就是通过别人的方法设置了却不知道是什么原理。具体可参照一下之前记录的文档。今天看了下源码,重新梳理了一下。目前我需要自定义Toast的使用场景:需要一个横向内容充满屏幕的Toast(默认的Toast一般出现在屏幕的中间靠下方的位置,并且只是一小块区域,文字多了的时候会换行,实际希望是不换行,单行显示充满屏幕),连续点击bu原创 2016-06-08 16:12:16 · 6934 阅读 · 3 评论 -
adb server启动失败的解决办法
今天公司切换了网络域后,启动不了adb服务,提示* daemon not running. starting it now on port 5037 *ADB server didn't ACK* failed to start daemon *网上有解释说 默认的端口 5037被其他应用占用了,但是我用netstat -ano | findstr "5037" 来检查占用转载 2016-10-19 15:47:23 · 2997 阅读 · 0 评论 -
从源码看滴滴插件化框架VirtualApk
滴滴开源插件框架地址:https://github.com/didi/VirtualAPK大神鸿洋的框架分析:http://blog.csdn.net/lmj623565791/article/details/75000580框架接入:http://www.jianshu.com/p/013510c19391本人比较渣,在阅读源码后做一个比较简单的记录,方便后期查看。先看看原创 2017-07-20 21:50:19 · 4569 阅读 · 0 评论