- 博客(231)
- 资源 (13)
- 收藏
- 关注
原创 你最了解的 SharedPreference和ContentProvider 知多少?
在技术学习的道路上,往往最常见、用的最多地方,却有着容易忽略的技术细节。某个时间点蓦然回首,才发现最应该了解和掌握的技术基础,却由于缺少总结和记录、或者是因为常态思维固化缺少场景去思考,却显得那么陌生。这篇文章将从作者自身的角度,去重新认识SharedPreference和ContentProvider这两个控件,并且以后也会在博客中有意识的记录类似的技术细节,防止这些基础的技术细节问题再次被...
2018-04-01 18:50:01 1027
原创 Java内存问题思考
前些天,有人问到 “开发过程中常见的内存泄漏都有哪些?”,一时脱口而出:静态的对象中(包括单例)持有一个生命周期较短的引用时,或内部类的子代码块对象的生命周期超过了外面代码的生命周期(如非静态内部类,线程),会导致这个短生命周期的对象内存泄漏。总之就是一个对象的生命周期结束(不再使用该对象)后,依然被某些对象所持有该对象强引用的场景就是内存泄漏。这样回答很明显并不是问答人想要的都有哪些场景,所...
2018-03-26 19:13:28 1010 1
原创 安卓平台中的动态加载技术分析
安卓平台的动态加载原理,本质其实还是利用java相关知识实现。然而java语言中,开发人员能通过程序进行动态操作class的,主要是字节码生成和类加载器这两部分的功能。本文中也主要是围绕这两方面的技术,展开在安卓平台上的应用分析。阅读本文,一起宏观理解安卓插件化,热修复,模块化,AOP,Java类加载等知识。动态加载技术分析一、Java基础知识1、虚拟机类的加载剖析Java虚拟机把描述类的数据从Cl
2018-01-08 17:51:37 856
原创 Lifecycle+Retrofit+Room完美结合 领略架构之美
安卓开发技术发展到现在已经非常成熟,有很多的技术专项如插件,热修,加固,瘦身,性能优化,自动化测试等已经在业界有了完善的或者开源的解决方案。 作为一枚多年的安卓研发,有必要学习或了解下这些优秀的解决方案,领略那些行业开创者的思想魅力,然后转化为自己的技术技能,争取应用到日常的开发中去,提高自己研发水平。Lifecycle+Retrofit+Room 云端漫步飞一般的感觉安卓项目的开发结构
2017-12-11 16:18:00 7656 7
原创 Gradle插件开发 APK瘦身资源自定义7z压缩
APK瘦身实战 资源自定义7z压缩项目开发中,随着业务的增长,常常需要在apk编译阶段对包代码或是资源做一定的自定义修改,比如热修复,插件生成,无埋点统计,渠道包生成等等。但是公司项目业务开发人员基本上都很少接触到相关技术,这里以学习的态度,实现一套用7zip压缩apk资源文件的gradle插件。APK瘦身在行业内已经有很多成熟的开源技术体现方案,如美团Android App包瘦身优化实践这篇博客中
2017-11-23 10:04:43 2136 2
原创 免sdk实现微信/支付宝转账打赏功能
安卓开发者都应该有一个属于自己的APP发布到市场,可以完善自己的技术站之外,加入广告,还可以有一份小收入。 但是这个年代,各家的应用市场是不欢迎带广告sdk的个人开发者应用的。还好我们可以用插件技术加入广告sdk,或者直接想一种方面实现打赏功能,让用户通过支付宝或微信转账到自己账户。免sdk实现 微信/支付宝 转账打赏功能安卓个人开发者如果如果想着App里实现支付打赏功能,嵌入sdk不说成本大外,
2017-09-21 20:00:46 5488 2
原创 知识总结之 插件化学习 Hook系统方法分析
这里主要讲的Hook,是利用java上的动态代理实现替换系统某个类,在方法调用过程中,利用反射,插入自己代码逻辑的一种方式。安卓插件化学习 Hook系统服务分析Hook技术主要用的是java的动态代理,掌握类动态代理,其实不难理解Hook原理,只不过是找到一个我们需要的Hook点,然后动态代理获取到系统目标类的代理对象,然后就可以在InvocationHandler中对想要修改的方法逻辑插入自己需求
2017-06-15 16:13:03 1263
原创 知识总结 插件化学习 Binder机制原理
Binder是android系统特有IPC方式,安卓平台中的各种服务交互基本都是Binder机制实现,理解和掌握Binder机制的实现原理可有效提升软件性能优化点,同时Binder机制的应用也是动态代理方式实现插件化基础。安卓插件化学习 Binder机制原理分析网上虽然已有很多Binder类似的优秀分析,本文处于自我学习目的,把我学理解和认识的东西记录一下。Binder设计结构理解1、通信进程两端两
2017-06-05 20:49:43 731
原创 知识总结 插件化学习 Activity加载分析
安卓插件化学习 插件Activity加载方式分析实现一套插件化项目很容易,但是投入生产环境,却很难。自己以学习为目的,主要分析其实现原理。在工作和学习过程中虽然用到或了解到多家安卓插件化实现方式及原理,自己并没有动手实现或参与公司插件化的研发,so业余时间从基础做起,总
2017-05-19 18:26:28 861
原创 知识总结之 插件化基础 java反射与代理
Java平台的反射机制是代码动态加载和调用的基本途径,在安卓系统源码中也用到了大量的反射动态加载类。反射也是安卓平台插件化实现的必要掌握的基础知识。代理是客户端灵活操作对象,间接的低耦合度操作对象的有效途径,也是插件化必要掌握知识。安卓插件化基础 java反射与代理一、反射java中反射机理比较常用,这里主要以代码实例展示其用法。什么是反射?指程序运行时 加载、获取一个未知类(已知类名)及类属性和方
2017-05-11 17:09:59 938
原创 知识总结之 插件化基础ClassLoader
安卓插件化技术已经作为一个优秀的合格研发必备要求,学习和掌握现有不同种类动态加载方案 是提升个人技术深度有效途径。插件化基础 ClassLoaderClassLoader是什么?ClassLoader 是将java编译后的字节码加载到虚拟机内存中的用到工具类。Android平台虚拟机Dalvik/ART可以运行的字节码为.dex文件,Java平台JVM虚拟机可以被加载的字节码为.class文件。针对
2017-05-05 18:25:41 703
原创 知识总结之 工厂模式
设计模式类的书及资料,看过很多遍,学习和理解容易,灵活应用就难了。只用多总结,多看别人代码,多多积累编码经验,才可以循序渐进,慢慢学会如何实战应用。设计模式-工厂模式定义简单工厂模式(静态工厂):定义一个创建对象的接口,在公共的接口方法中,通过不同的参数来创建目标对象。(里氏替换)工厂方法模式:定义一个用于创建对象的接口,目标对象实现该接口,并在方法中实现如何创建对象。(开闭原则)抽象工厂模式:定义
2017-05-02 20:41:25 881
原创 知识总结之 JobQueue 源码解析
知识总结之 JobQueue 源码解析本文主要分析及调研开源项目android-priority-jobqueue的基本原理及知识点,目的为更加深入的了解安卓平台后台 任务处理,及多线程调度的理解。Android Priority Job Queue一、JobQueue是什么? Priority Job Queue is an implementation of a Job Queue spe
2017-05-02 15:22:11 2726
原创 知识总结之 AsyncTask 源码解析
知识总结之 AsyncTask 源码解析虽然这个类没什么特别地方,也是很常用的类,前段时间面试发现很多公司还是很喜欢问到这个类的原理,及使用场景,so,这里做下总结。一、 一句话概括「AsyncTask = ThreadPool + Handler;」AsyncTasks是android提供的轻量级执行异步任务的类,提供了执行耗时任务的方法,及各个任务阶段UI线程回调。二、 优缺点优点 使用简单
2017-04-28 19:01:30 711
原创 Gradle基本认识及理解
Gradle基本认识及理解Gradle是什么?gradle首先可以理解为一个项目构建工具,或者理解深入点,是一种编程框架,安卓项目最流行
2016-12-09 17:09:49 2100
原创 git log展示过滤技巧
git log命令展示过滤技巧1. git log -n 展示前n条数据2.git log –stat 展示简要的每次提交行数的变化,及其他基本信息。3.git log -p 展示每次提交详细的代码变化4.git log –pretty=oneline 用一行展示每次提交的commit id 和 提交注释信息5. git log –graph展示分支信息6.git lo
2016-11-08 11:07:20 17864 3
原创 辅助功能 之 小米手机悬浮窗权限
辅助功能 之 小米手机悬浮窗权限最近做项目遇到小米手机比较人(zhuang)性(bi)化的悬浮窗权限,当在小米手机上安装完应用后默认是关闭这个权限的,需要用户手动到应用详情页打开该权限。重(keng)要(die)的是使用这个权限开关系统window后, 小米手机不给任何提示就是不给弹窗。一开始以为是自己代码逻辑写错了,半天才反应过来,小米还有个这个权限,当天6.0以上安卓系统也需要这个权限,但是会有
2016-06-02 19:30:40 18313 2
原创 Node 升级工具n 大坑
npm install -g n 造成的大坑 dyld: Symbol not found: Referenced from: /usr/local/bin/node Expected in: /usr/lib/libstdc++.6.dylib Trace本文环境基于Mac OS X EI Capitan V10.11.4,应该是mac环境的通病。好奇心害死狗心血来潮想更新一下
2016-04-08 11:01:48 21546 1
原创 Android Theme-安卓样式换肤实践方案
所谓的主题切换,就是能够根据不同的设定,呈现不同风格的界面给用户,也就是所谓的换肤。 本文主要总结了目前作者所知的两种实现方案.概述一直以来,认为App换肤是件很酷的东西,不同用户可以自己打造喜欢的颜色,类似墨迹,QQ,或是软件夜间模式,给用户很酷的体验.在写这个换肤实践方案之前,我也参考了其他人的一些总结,基本上大家都是从这几个思路去实现, 如果出现有误或者不够详细的地方,希望大家提出意见或者自行
2016-03-31 18:05:48 3140
原创 视频转gif图片格式-好用的软件
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。引文博客中一直引用图片,感觉没有其他人博文中动态图更加有效果,一直以来因为懒,且markdown不
2016-03-30 19:52:46 2417
原创 Hexo-免费个人博客搭建框架使用
Hexo-免费博客搭建使用讲解初识hexo就给人以眼前一亮的感觉, 查看资料到自己搭建个人博客, 简直是给人”带你装B,带你F”的快感,简单的博客生成操作, 多样化美观的主题选择, 功能强大的插件定制,关键是这些都是免费开源的,作为一个程序员,没有什么比遇到这种好使的软件更加给人已激动了.配置环境安装Node(必须)作用:用来生成静态页面的, win\mac\linux都有相关版本自行到官网下载。
2016-03-18 14:42:43 6173
原创 安卓通知栏管理详解及分析 NotificationListenerService
NotificationListenerService 安卓通知栏管理详解及分析一. 方法概述在api 18前可以通过辅助功能’AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED’或是反射活取通知栏相关信息。 现在我们可以根据NotificationListenerService类非常容易的活取通知回调相关信息。二. NotificationLis
2016-03-11 18:57:33 14867 13
原创 备份已安装应用的apk包技术实现方案
安卓设备上备份已安装应用的apk包技术实现方案需求的目的在只有安装应用, 没有该应用的apk,而我们又想活取应用apk,用来分享给别人,或是应用的备份, 说是应用的增量升级的, 怎么办?本文将告诉你如何靠谱的导出一个已安装应用的apk.了解相关目录安卓设备上根据安卓方式的不同,安装的数据存放路径也不同1. system/app此类应用是系统初始化时候安装完成的, 存放在 ‘system/app’ 目
2016-02-04 19:30:32 5011 1
原创 Android m6.0权限问题调用封装utils类 - Permission in Android M
Android 6.0系统中权限问题调用 - Permission in Android M概述安卓平台权限一直有被流氓应用随便利用诟病, android M的发布彻底解决了这一问题,取而代之的是,app不得不在运行时一个一个询问用户授予权限。 Android 6.0(api23)系统中,做了一些限制, 开发者在使用到每条权限时必须自己调用相关代码请求.如果没有获得某项权限,直接使用相关功能,则会导
2015-11-06 19:30:51 7830
原创 安卓中的增量升级实现-SmartUpdate
SmartUpdate-增量升级增量升级意义增量升级即将需要升级的文件与新版文件做差分对比,产生差分包patch,然后将只差分包patch下发给用户在客户端生成新版文件.达到节省流量的效果.在移动开发流量至上时代,这种增量升级方法非常实用. 经过测试验证, 增量的效果还是非常不错的.增量升级方法增量升级需要新旧版本差分对比,产生差分包, 然后与老版文件合并成新版.这个过程重要的是怎么产生差分包?怎
2015-10-15 17:14:27 2098
原创 Android Studio中实战Jni开发
AS中实战Jni开发Jni(Java Native Interface )其实是Java平台与C/C++及其他语言交互的接口,基于Android SDK开发的应用用的事java语言,自然可以通过Jni调用C/C++代码满足一些特殊需求。为了便于提高安卓平台JNI开发模式,Google提供了一套工具集Native Development Kit(NDK)来调用动态库,使得开发者可以快速方便的完成JNI
2015-09-20 02:06:07 1685
原创 Python入门-函数的使用到程序的发布安装
Python入门1-函数的使用到Python的发布安装本文主要适合有一定编程经验,至少掌握一门编程语言的人查看。文中例子大多都是简单到认识英文单词就能看懂的水平,主要讲的是Python的整体用法和结构,不会设计高深层次,对Python入门有一定帮助。 Python和Java对比,会看到Python设计思想在于简洁、实用、强大,每一个程序员都值得学习和掌握。Python函数的定义及实用Python中的
2015-06-05 21:16:26 1646
原创 从Java类初始化,来看代码优化
Java类初始化顺序可能引起的bug 最近编程中遇到的问题, 类的成员初始化过程大家都很了解,都是基础知识,但是有些地方很微妙,重新学习下,来提高代码质量。先描述下遇到的场景: 子类构造器中调用super(),然后在父类构造器中调用子类有@overwrite的方法,子类在overwrite的方法中对自己成员赋值,log输出成功赋值,在子类new完,log打印发现部分
2015-04-17 13:23:37 1147
原创 macbook 终端颜色配置
次文章方法只满足简单颜色配置方案,且只针对单个用户生效。1、终端颜色配置 1.编辑 ~/.bash_profile, 加入以下代码:Bash代码 export CLICOLOR=1 export LSCOLORS=gxfxaxdxcxegedabagacad source ~/.bash_profile参考资
2015-02-12 14:09:09 2340
原创 Android ListView动画特效实现原理及源码
Android 动画分三种,其中属性动画为我们最常用动画,且能满足项目中开发几乎全部需求,google官方包支持3.0+,我们可以引用三方包nineoldandroids来失陪到低版本。本例子中就是用属性动画实现效果。 对普通的View做动画,我们只要定义好要的动画ObjectAnimator或AnimatorSet,然后设置属性启动及可。但是,对ListView做动画应该如何、什么
2014-07-04 20:01:34 4859 1
原创 android 源码 下载 方法
Android源代码下载 第一次下载android源码,难免会遇到些小白问题,so,做下记录。 英文好的话可以直接看这里:http://source.android.com/source/downloading.html 一、新建你的源代码的文件夹:$ mkdir ~/bin$ PATH=~/bin:$PATH
2014-04-09 18:30:18 1689
原创 android ANR问题分析
一:什么是ANRANR:Application Not Responding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10 seconds)BroadcastReceiver在特定时间内无法处理完成3:Serv
2014-04-04 14:16:47 4470
原创 Android apk安全 反编译及防反编译 简单记录
自己辛辛苦苦写的软件发现被别的无良程序员copy,更可恨的是还发布到市场,让自己的劳动成果及产品受到莫名的伤害,很可耻,so,我们还是先学习下反编译的原理,分析下如何才能防止别人反编译自己的软件。一、下载apktool,反编译资源文件,可以获得项目各个dpi图片,及媒体文件,可看到AndroidManifest.xml配置文件 1、下载地址http://code.go
2014-04-03 14:09:34 2524
原创 android 获取apk信息
使用aapt工具,不能用的可以先执行以下命令:cd $ANDROID_HOME/platform-tools ln -s ../build-tools/19.0.0/aapt aapt ln -s ../build-tools/19.0.0/lib lib ln -s ../build-tools/19.0.0/aidl aidl 测试:$aapt
2014-04-01 19:50:01 1766
原创 git 颜色和快捷 设置
通过配置~/.gitcongig 可以自定义git的快捷命令 br cm st ```git config --global color.diff auto git config --global color.status auto git config --global color.branch auto如:[color] diff = auto
2014-03-05 15:02:41 5606
原创 健美计步器-开启超智能健康生活
健美计步器-开启超智能健康生活, 随着现在比较昂贵的可穿戴或体感设备,如血压计、心率仪、健康手环、智能秤,智能手表等走进人民的生活的同时,移动APP也在努力用软件为你的健康缩减成本,提高效果。安卓系统软件《健美计步器》力求成为用户最有效的健康、健美,运动专家,开启超智
2014-02-26 00:16:24 2847 1
原创 Ubuntu 下 adb 连接手机调试android程序失败 终极解决方法
Ubuntu 下 adb 连接手机调试 今code完毕,发现手机连接突然出现问题,logcat无输出,adb devices后发现手机连接有问题。 手机连接状态:手机端,android系统,已打开debug模式,并且状态栏显示“已连接USB”调试; 电脑端,Ubuntu系统,adb devices,
2014-02-17 21:03:29 3566
原创 Ubuntu 文件权限 修改及查看
一、查看linux文件的权限:查看path路径下名为filename的文件或文件夹的权限:Java代码 ls -l path/filename 查看path路径下的所有文件的权限:Java代码 ls -ls path 查看linux文件夹的权限:Java代码 ls
2014-01-26 13:32:47 6982 1
打飞机-安卓源码分享-可运行
2013-11-23
完整的网站开发 实战
2012-05-04
C语言常见问题和常见算法
2012-04-16
数据结构 演示软件
2012-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人