自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Android APP适配全面屏手机的技术要点

为了更好的阅读体验,可以转到我的个人站点:Windy’Journal目录目录关于全面屏更大的屏幕高宽比例在AndroidManifest.xml声明max_aspect值更换部分被拉伸的图片资源文件布局文件的优化建议虚拟导航键(NavigationBar)适配判断虚拟导航键是否存在分析源码实现判断NavigationBar的方法关于VIVO全面屏手机虚...

2018-02-07 21:12:09 37964 3

原创 Android ART虚拟机系列: 虚拟机CheckPoint机制分析

线程运行时执行Check Point闭包任务;挂起和恢复线程的执行;虚拟机为了实现这两个功能,在Java线程对应的Native类中添加了变量,通过设置或者来通知线程需要执行挂起任务还是闭包任务。具体执行任务的时机是在函数中,这函数(检查点)被插入到了解释执行和机器码执行的多个流程中,这样,Runnable状态的线程就能快速执行到检查点,完成线程挂起或者执行闭包任务。

2023-07-17 00:37:24 935

原创 免Root 实现App加载Xposed插件的工具Xpatch源码解析(二)

前言Xpatch是笔者开发的一款破解Android App工具,源码地址:https://github.com/WindySha/Xpatch本文接着上一篇Xpatch源码解析文章,继续分析Xpatch的实现原理。Xpatch加载Xposed插件流程查找插件Apk加载Xposed插件之前,首先需要遍历所有安装的应用,根据Xposed插件的特征,找到其中的Xposed插件。那什么样的应...

2019-07-27 11:19:30 1384

原创 免Root 实现App加载Xposed插件的工具Xpatch源码解析(一)

前言Xpatch是一款免Root实现App加载Xposed插件的工具,可以非常方便地实现App的逆向破解(再也不用改smali代码了),源码也已经上传到Github上,欢迎各位Fork and Star。本文主要介绍Xpatch的实现原理。由于其原理比较复杂,所以分二篇文章来详细讲解。由于Xpatch处理Xposed module的方法参考了Xposed框架部分源码,所以本文先介绍Xpose...

2019-07-27 11:10:36 1349

原创 Xpatch:免Root实现App加载Xposed插件的一种方法

Xpatch概述Xpatch用来重新签名打包Apk文件,使重打包后的Apk能加载安装在系统里的任意Xposed插件,从而实现免Root Hook任意App。源码https://github.com/WindySha/XpatchXpatch基本原理Xpatch的原理是对Apk文件进行二次打包,重新签名,并生成一个新的apk文件。在Apk二次打包过程中,插入加载Xposed插件的逻辑,这...

2019-04-10 02:08:58 12557 2

原创 Android App接入Facebook分享SDK,概率性无法启动Facebook客户端的问题分析

问题来源由于我司的android app产品主要是面向海外,因此,app中的分享功能接入facebook分享是必不可少的。最近在接入facebook android sdk进行分享时,发现一个非常奇怪的现象,明明手机上已经安装了facebook客户端,但却经常出现无法调起客户端分享,而是调起了facebook sdk内置的网页分享。在网页端分享时,用户又需要重新输入账号密码才能分享(客户端不用...

2019-03-15 01:47:23 10669 2

原创 Git常用命令详解

文章目录Git简介三个区主要的几个命令git commit用法git stash用法git reset用法git refloggit addgit checkoutgit checkout切换分支git checkout 回退修改git revertreset,checkout,revert总结删除分支git pushgit pull1. git merge2. git rebase3. reb...

2018-09-23 18:13:42 54867 5

原创 Kotlin入门指南

Kotlin的优势代码简洁高效、强大的when语法,不用写分号结尾,findViewById光荣退休,空指针安全、强大的扩展功能、函数式编程、支持lambda表达式、流式API等等

2018-04-28 18:54:31 656

原创 侵入性低扩展性强的Android换肤框架XSkinLoader的用法及原理

更好的阅读体验,请转到我的个人博客:Windy’Journal目录目录前言XSkinLoader的使用方法初始化XML换肤xml中指定换肤属性新增换肤属性新增style中的换肤属性XSKinLoader的实现原理分析使用WeakHashMap支持AppCompatActivity换肤Activity的statusBar颜色换肤支持style中的换肤属性...

2018-02-10 17:10:30 3123 4

原创 Android AOP编程的四种策略探讨:Aspectj,cglib+dexmaker,Javassist,epic+dexposed

前言AOP:面向切面编程(Aspect-Oriented Programming)。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』,它提倡的是将功能模块化,对象化,而AOP的思想,则不太一样,它提倡的是针对同一类问题的统一处理。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,提高开发效率。那么AOP这

2018-01-06 10:36:07 4026 3

原创 深入理解JVM之Java字节码(.class)文件详解

Understanding bytecode makes you a better programmer前言作为一个Java开发者,对技术的追求而不仅仅停留在会用API,会写基本功能上,要想在技术上有更高的造诣,就需要深入到原理层面去认识代码运行的机制。因此,本文从class字节码文件的结构入手,一步步来解剖二进制字节码的内部工作原理,这对深入理解JVM的运行机制大有裨益,同时,对于想要使

2018-01-04 11:52:41 30251 15

原创 Android热修复框架AndFix核心代码分析并改进

前言AndFix,全称是Android hot-fix,是阿里开源的一个Android热修复框架,允许APP在不重新发布版本的情况下修复线上的bug。就目前来说,AndFix支持Android 2.3到6.0版本,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime。 这个框架的核心技术点有两个方面: 1.通过apkpatch工具生成一个.apatch格式的补丁

2017-12-26 21:09:44 2138 1

原创 超级实用的Android磁盘缓存工具DiskDataCacher用法以及原理

DiskDataCacher磁盘缓存工具用法以及原理原创文档,转载请注明出处 by WindyDiskDataCacher是一个轻量级的Android磁盘缓存工具,基于LRU算法实现,同时可以设置缓存有效期,使用起来十分方便。 源码:DiskDataCacher工具用途用于缓存网络请求返回的数据,并且可以设置缓存数据的有效期,比如,缓存时间假设为1个小时,超时1小时后再次获取缓存会自动失效,让

2017-12-21 10:46:13 2189

原创 国内Android开发技术大牛推介

国内Android开发技术大牛推介院辉辉 Android系统工程师,曾就职于IBM、Lenovo,目前就职于小米MIUI系统组,对Android系统源码研究的比较透彻,毕竟是系统工程师。博客中有很多高质量的源码分析文章. 博客地址:Gityuan罗升阳 江湖人称老罗(其实挺年轻的),对Android系统源码有颇深的研究,著有《Android系统源代码情景分析》一书,并且在CSDN上分享了出

2017-12-15 21:07:01 7032 2

原创 Android内存泄露问题分享

不少人认为 JAVA程序,因为有垃圾回收机制,应该没有内存泄露。 其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造成了内存泄露。如果我们的java运行很久,而这种内存泄露不断的发生,最后就没内存可用了。当然java的内存泄漏和C/C++是不一样的。如果java程序完全结束后,它所有的对象就都不可达了,系统就可以

2017-03-23 11:33:05 281

原创 关于EditText设置单击提示音方法的探讨

关于EditText设置单击提示音方法的探讨问题来源在我们手机中,有很多编辑框,但却存在这样一个现象,就是有一些编辑框点击时有点击提示音,但有些却没有。为什么会出现这种情况呢?难道那些有点击提示音的EditText都是自己设置的音效吗?EditText单击提示音实验一下,发现当EditText的onClickListener不为空时,即 editText..setOnClickListener

2017-03-23 11:30:43 928

原创 Gmail,OutLook邮箱基于Oauth2.0协议授权登录邮箱客户端

1. 邮箱登录安全考虑到邮箱登陆的安全性,使用这种登陆方法,用户不用暴露帐号密码给我们客户端就可以进行收发邮件,google推荐用户使用网页授权登陆的方式来登陆Gmail邮箱。查阅相关资料后,得知,这种授权登陆的方式都是给予Oauth2.0协议。很多第三方的邮件客户端都已实现了给予Oauth2.0授权登陆这一功能,例如:WPS邮箱,QQ邮箱,网易邮箱大师实现了gmail的授权登陆

2017-03-23 11:06:27 15335

原创 详解基于LRU缓存的LruCache类及其在Android内存优化中的应用

详解基于LRU缓存的LruCache类及其在Android内存优化中的应用

2016-07-06 16:42:15 1715

转载 深入解析AsyncTask用法

AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧:多线程AsyncTask这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小功能从网络上下载一个图片,然后放到ImageView中,是用AsyncTask来实现的,本身逻辑也很简单,仅是在doInBackground中用HT

2014-09-19 15:47:51 451

转载 Android-- FragmentPagerAdapter,FragmentStatePagerAdapter

ViewPagerViewPager 如其名所述,是负责翻页的一个 View。准确说是一个 ViewGroup,包含多个 View 页,在手指横向滑动屏幕时,其负责对 View 进行切换。为了生成这些 View 页,需要提供一个 PagerAdapter 来进行和数据绑定以及生成最终的 View 页。setAdapter()ViewPager 通过 se

2014-06-06 15:26:08 518

转载 JAVA的StringBuffer类用法

StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。         所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。         在

2014-01-02 11:00:39 523

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除