- 博客(30)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 android studio中的JNI实现
前言:这段时间由于工作上的问题,所以一直没写博客,最近在做sdk,正好用到了JNI,所以写一篇关于如何在Android studio中使用JNI。PS:去年也写过一篇博客是关于NDK在eclipse上的实现,有兴趣可以了解下。准备工作:1.下载最新的android-ndk-r13b-windows-x86_64,这个根据自己系统版本来,链接我就不贴了,这个百度一下很多地方有链接
2017-09-18 01:07:29
1078
原创 C++学习-模板
前言:当你在写代码的时候可能会遇到这样的情况,多处地方都需要调用同一个功能/方法,但是我们不知道调用者传递进来的参数类型,以及这个方法的返回类型,或许你可能想到的是重载或者重写,但是还有另一种方式实现就是-- 模板。当然除此之外,还有类模板,它是实现代码重用的一种工具。模板可以说是分为两种类型,一种是类模板,一种是函数模板,先来说下函数模板。函数模板:场景:两个数相加求和,我们
2017-08-21 01:22:30
588
原创 C语言学习-struct结构体定义你自己的数据类型
前言:在java中有类,内部封装的是一些相关联的数据,例如一个学生,有姓名,年龄,性别,班级,学校等等,这些数据组合到一起就构成了我们的类。而在C中,也可以定义这样一个‘类’(当然C语言中没有类这个概念),那就是结构体--struct,通过结构体把这些相关联的数据给组合起来。如何定义一个结构体struct Student{ char name[20]; int age;
2017-08-18 01:59:20
4574
原创 C语言学习-指针
前言: 最近这段时间一直在深入学习C/C++,主要以前一直在做应用层的软件,对这个了解甚少,当初做嵌入式的时候也相当于在打杂,没有对C/C++深入学习。当自己一步步研究源码的时候,才发现涉及底层C/C++是必不可少的。当初有个朋友说,他们公司有些同事,主要公司业务也是偏硬件的,很多都能用C/C++实现应用层的功能,在那时候就对C/C++向往已久。最近也终于有时间能好好学学C/C++。
2017-08-16 02:17:17
501
原创 android 通过代理activity的方式实现插件化
前言:一直以来就对插件化这技术推崇已久,在去年也写过两篇关于插件化基础的文章:Java中的ClassLoader 动态加载机制Android中的动态加载都是关于classLoader如何加载外部apk中的代码,在"android中的动态加载"这篇博客末尾,提了下如何打开插件的acti,所以这篇文章就是谈如何通过代理Activity实现打开插件中的activity的。由于插件化的技术
2017-07-18 16:18:46
3236
3
原创 android APK动态添加数据
前言:前段时间遇到个需求:1.需要在不安装apk的前提下,获取当前apk的渠道信息。2.用户在特定的页面下载的apk,需要跳到与app中对应的页面,从而让app的用户体验更好。第一个需求好处理,只需要解析xml文件就可以获取到渠道信息了,如果不清楚的可以看我这篇博客android 解析未安装apk中的AndroidManifest.xml以及系统源码分析。第二个需求就不好处理,
2017-07-14 01:47:06
2576
原创 android apk安装过程源码解析
前言:前一篇博客分析了一下PackageManagerService是如何解析apk的以及我们如何解析未安装apk中的androidManifest.xml文件。解析完肯定要安装的,索性写一篇关于android系统是如何安装我们apk的流程分析。不过这里仅仅只分析java层面的代码,C层方面的就跳过了。apk安装起始点-Pm.java run()apk安装java层的起始位置是在Pm.
2017-07-13 23:11:18
5761
1
原创 android 解析未安装apk中的AndroidManifest.xml以及系统源码分析
前言:场景:在不安装apk的前提下,获取apk中的包名,LAUNCHER Activity等,这就需要解析我们的androidManifest.xml文件了,而我们的apk又是一个zip的压缩文件,通过压缩文件的方式--好压,rar等打开。可以看到我们以上的目录,而我们的AndroidManifest.xml就在其中,有了这个就好办了,那我们就只需要获取这个zip包中的androi
2017-07-11 10:42:54
5081
原创 你应该掌握的-面向对象的六大原则
前言:对于一个使用java语言的程序员而言,面向对象是编码时候的一条必要基准。理解好面向对象六大原则,对于你以后的编码是非常重要的。对于这六大原则,每个人的理解深度可能不同,绝大部分还是依据你自己的工作经验来理解这六大原则。对于我自己而言就是这样,刚开始工作的时候看这个懵懵懂懂,每过一年看一次面向对象的六大原则,都有不同的体会。所以在这我仅仅谈下这六大原则的概念以及实例,或许其中参杂着自己现阶
2017-06-22 01:52:58
605
原创 Android内存优化-MAT使用
前言:MAT,一款用于查找内存泄漏的工具,或者说是一款内存分析工具,因为它并不能给你很明确的指出哪地方发生了内存泄漏,还是要靠你自己根据去分析xx.hprof文件来查找出项目中内存泄漏的地方。刚开始学习的时候也是在网上找了许多资料,看了之后感觉一脸懵逼,自己摸索了很久之后,并且运用到优化自己的项目上,才决定写一篇关于MAT的博客。主要是很多博客说的都是很笼统,就说了下如何操作,然后立马就上图说
2017-06-13 23:37:27
483
原创 内存优化-java四种引用,让你能更好的构建你的项目
前言:Activity和fragment都有生命周期,那对于我们的java对象而言同样是有生命周期的,比较笼统的说,那就是当他被创建的时候一直到GC回收终止,这样一个对象的生命周期就走完了。而java为我们提供了4种引用类型,分别是1.强引用-StrongReference2.弱引用-WeakReference3.软引用-SoftReference4.虚引用-PhantomRe
2017-06-12 03:00:05
654
原创 教你如何使用SwipeRefreshLayout来构建一个上拉加载下拉刷新框架
前言:基本上所以的移动端应用都有Listview(当然RecyclerView也一样),那必不可少的都会嵌入一个上拉加载下拉刷新的功能。这样能大大的减少用户的流量消耗,同样对于用户也有更好的用户体验。说到这个功能,那必不可少的会涉及到SwipeRefreshLayout,这是由Google给我们封装好的一个sdk,他支持我们listview的下拉刷新功能。当然也可以自己自定义一个下拉刷新的
2017-06-09 02:43:37
2554
原创 从源码角度分析android中的消息机制
前言: android中的消息机制是每个android开发工程师必须要了解的,所以这篇文章就从源码的角度来解析整个android消息机制的运作流程。先从网上盗个图,android消息机制的运行流程:由三大组件组成-Handler(从消息队列中获取消息并处理消息),MessageQueue(Message)(消息队列),Looper(在主线程也就是我们的UI线程中创建的消息循
2017-06-07 01:32:21
430
原创 android fragment懒加载细致解析
前言:最近在做项目优化,正好处理到这块,所以决定重新写篇细致点的关于fragment懒加载的博客。fragment的懒加载对于项目的性能也有优化作用,流量对于手机端而言还是蛮重要的虽然现在手机在很多时候所处于的网络环境都是使用wifi。当然你获取数据肯定要开启线程获取数据,这对于手机而言也是性能消耗。好了,说了这么多废话该进入正题了,当然要懂一点fragment懒加载的,可以看我前期写的一
2017-06-01 00:43:56
1072
原创 android 查找内存泄漏 优化应用
前言:正如标题所言,查找我们项目的内存泄漏,来优化我们的应用,很早以前就想写篇关于应用优化的文章,只是一直由于各种各样的原因耽误了。前段时间终于有时间来对自己公司的项目进行优化处理,所以把我在项目中做的处理拿来谈谈。当然,也是由于项目一些需求导致单个功能/业务页面越来越庞大以及一些设计上面的要求,从而导致项目有些卡顿,所以不得不来对项目进行优化。对于项目的优化,网上也有很多
2017-05-30 22:39:17
511
原创 通过DiskLruCache以及LruCache来构建自己项目的图片缓存框架
前言:众所周知,对于手机项目而言,图片缓存框架是必不可少的,这样不仅能优化项目的性能,同时也能提高用户体验。git上也有许多开元的图片缓存框架,有很多可以选择,我这仅仅只是教你如何编写一份属于自己的图片缓存框架,这也是我早期之前在其中一个项目中编写的。(仅仅只支持从网络上获取base64转码过来的图片)。图片缓存基本上,都是通过DiskLruCache以及LruCache来实现的,一个是硬
2017-05-21 02:58:46
597
原创 第三方商户调起支付宝出现 alipays://platformapi
前言:很久没有写过博客了,主要是因为之前一直在学习RN和web相关的知识,以及工作上的原因忙不过来,没有坚持了,现阶段终于有时间来写写博客了。 这次要分享的内容也是前不久项目中出现的一个问题,项目中有一块功能是需要与第三方商户合作,通过访问他们提供的h5页面来调起我们自己手机端的支付宝。先上一个出现错误的异常图可以看到 url是由‘’alipays‘’开头的,由于我们的
2017-05-17 17:08:00
142264
7
原创 Android中的动态加载
前言:上篇说了下java的动态加载机制,最终还是为android的动态加载准备的。android中的动态加载有所不同,android中Dalvik虚拟机所支持的是.dex文件,我们项目中中的代码就是在dex文件中。而ClassLoader运用的也是"双亲代理模式",Android中运用的classloader有2中,分别是--DexClassLoader以及PathClassLoader。
2016-07-07 21:54:57
860
原创 Java中的ClassLoader 动态加载机制
前言:Android中的动态加载机制能更好的优化我们的应用,同时实现动态的更新,这就便于我们管理我们的应用,通过插件化来减轻我们的内存以及CPU消耗,在不发布新版本的情况下能更新某些模块。当然这里要说的并不是android中的动态加载机制,而是java中的ClassLoader动态加载我们的class,虽然android是基于Dalvik,但是先了解java中JVM怎么来加载我们的clas
2016-07-03 23:09:28
9679
1
原创 Android EventBus解析
前言:在项目中不可避免的会遇到许多不同组件之间数据交互的问题,以及有些或许会感觉很麻烦,就像Activity与Fragment交互一样,可能我们要构建一个交互工具类,或者是通过接口回调的机制来对两者进行交互。那有没有更好的方式来解决我们这些问题呢?肯定是有的,那就是EventBus一个用于不同组件间解耦的开源框架---https://github.com/greenrobot/EventB
2016-06-27 12:38:23
378
原创 android NDK实现
前言:前段时间一直研究android的Framework层代码,其中基本都设计到JNI,自己项目中有时候也用到这种技术,当然很多apk的一些关键性代码都用C/C++代码来实现,这样也提高了代码的安全性。所以在这里记录下,这里仅仅只是一个小小demo实现。NDK的环境配置这里就不细说了,网上有很多文章关于NDK的环境配置。先上我们的实现图:(调用C/C++代码,获取一段文字信息显示到界面
2016-06-23 01:23:05
798
原创 基于android的Http网络请求
前面几天,遇到一个基于http协议的post方法实现一个网络请求的面试题,一直是用网络请求框架请求的,当时忘了HttpURLConnection是如何写的去了(汗颜)。所以今天整体记录下基于android的Http协议,并主要实现其中的GET与POST方法。Http协议:http是一种应用层协议,它是基于TCP实现了可靠的数据传输,能够保证数据的完整性,可靠性。(TCP提供了可靠的字节流服
2016-06-08 18:28:02
469
原创 ListView构建层级树形控件
前言: 前段时间由于要构建一个树形结构的控件一直找不到头绪,然后看到了hongyang大神的一篇博客,才逐渐找到思路,直接利用ListView来构建树形控件。整体来说,树形控件也就是一个ListView样式的展示形式,只要处理好每个层级的内边距,以及点击item展开收缩时adapter中数据的顺序,这样就好做处理了。以下是项目的演示以及整体结构的展示:第一步:首先是构
2016-05-29 17:08:56
863
原创 AIDL与Messenger跨进程通信
前言:当初对于IPC跨进程通信技术感觉好"高大上",竟然还能在不同应用中通信。而android中的IPC机制,无论是AIDL还是Messenger都是通过Binder来进行跨进程通信的。AIDL:由3个组件构成: 服务端接口,binder以及我们的客户端。服务端定义的IBinder接口,客户端通过通过ServiceConnection接收IBinder接口,然后执行IBinder接口中定义
2016-04-14 19:53:55
579
原创 Fragment延迟加载技术(解决Viewpager预加载fragment)
看到很多朋友问到,如何解决ViewPager预加载fragment的问题,一些因ViewPager预加载fragment而出现的bug。所以今天就写了这篇博客。 缘由:ViewPager结合fragment,Activity显示的时候,加载ViewPager中的第一个位置的fragment时,第二个位置的fragment也会被加载。打个比方,第二个fragment的onCreateView方
2016-04-10 20:16:38
2812
原创 通过自定义ViewGroup来实现侧滑菜单效果,解决滑动冲
前言:在去年跟同事做一个外包项目的时候遇到了一个问题,那就是根据需求要求实现一个侧滑菜单的效果,那时候感觉这个好牛逼,跟QQ的效果差不多,感觉有点难做,所以今天我决定写一篇博客来分析下该如何做这个侧滑菜单,同时,在自定义ViewGroup中如何解决侧滑菜单与ListView冲突的问题。 View的事件分发,很多博客上都有,跟大家推荐下的是郭霖的博客,他写的那个事件分发的博客简单易
2016-03-14 21:50:07
1010
原创 通过反射机制来构建标签页
废话不多说,先上图:标签1:图2:标签3就不上传了,因为不知道怎么弄动态图,请别介意。标签页现在基本上每个商业项目中基本都有这个功能,最开始的时候,我也为这个苦恼,不知道如何构建,所以我把这个写成一个工具类,或者说是一个框架。把他的一些操作,以及fragment的数据传递做了封装。当然用自定义view也可以实现这个,viewPager也可以,方法多种样,最主要的还是
2016-02-29 22:36:23
475
原创 通过计算ListView的高度导致ListView失去它原有回收机制,同时造成ANR
前言: 由于ScrollView和ListView共存的时候,由于项目中是用的自定义的ListView,通过又不能更换ListView,只能用公司框架的,所以我是通过计算ListView每个Item的高度来计算ListView的高度来设定ListView的高度。这样在ListView就能在ScrollView中正常显示了。但是由于这样把所有的Item都计算出来,这样的ListView就相当
2016-02-25 20:35:02
1465
转载 避免Android中Context引起的内存泄露
http://droidyue.com/blog/2015/04/12/avoid-memory-leaks-on-context-in-android/主题 AndroidContext是我们在编写Android程序经常使用到的对象,意思为上下文对象。 常用的有Activity的Context还是有Application的Context。Activity用来展示活动界面,
2016-02-25 20:10:13
591
原创 解决scrollview与listview共存问题 计算listview的宽高(item中有imageview)
前言:由于在项目中遇到listview与scrollView共存的时候,导致listview无法正常显示,或者说是有时候只显示一条item的情况,在网上查找了好多资料,基本都是1.重写listview的onmeasure()方法,使listview能适应scrollview的效果protected void onMeasure(int widthMeasureSpec, int hei
2016-02-18 21:19:58
987
Android Studio 导入SVN项目,so路径出错这是什么原因?
2016-07-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人