8 孙朝阳

尚未进行身份认证

逆水行舟,不进则退!

等级
TA的排名 2w+

Bitmap内存管理及三级缓存的建立

基础知识内存大小的计算ARGB_8888各占8位,4个字节,内存为widthheight4RGB_565和ARGB_4444,占两个字节,内存为widthheight2获取Bitmap所占内存getByteCount(),该方法返回可用于存储此位图像素的最小字节数BitmapFactory.Options控制解码图片参数inDensity:表示这个bitmap的像素密度in...

2019-08-28 14:35:55

NDK系列文章(三)JNI基础

Java和C/C++中的基本类型的映射关系下表中的数据为JNI基本数据类型及对应的长度d如何配置cmakelist.txt配置编译动态库和静态库add_library(jinInterfaceSHAREDlibrary.clibrary.h)//SHARED表示是动态库add_library(jinInterfaceSTATIClibrary.clibrary.h)/...

2019-09-28 00:44:27

NDK系列文章(二)C语言基础

函数及参数传递函数还有很多叫法,比如方法、子例程或程序,等等。内部函数:内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。staticintmax(inta,intb)外部函数:如果在定义函数时,在函数的首部的最左端加关键字extern,则此函数是外部函数,可供其它文件调用。C语...

2019-09-18 10:20:11

NDK系列文章(一)—— NDK概览

JNI简介名称:JavaNativeInterface即Java本地接口作用:使得Java与本地其他类型语言(如C、C++)交互JNI是Java调用Native语言的一种特性,JNI属于Java的,与Android无直接关系Java通过JNI可以调动由C/C++实现的驱动,从而扩展Java虚拟机实现步骤:在java中声明Native方法(即需要调用的本场方法)编译上述J...

2019-09-09 10:40:17

如何卸载Android手机内置应用

1、查看当前打开应用报名adbshelldumpsyswindow|grepmCurrentFocus2、根据包名卸载应用adbshellpmuninstall[-k][--userUSER_ID]包名-k卸载应用且保留数据与缓存,如果不加-k则全部删除。--user指定用户id,Android系统支持多个用户,默认...

2019-08-20 09:58:09

搭建IPC通信框架(RPC)

Android进程通讯方式有很多,如Socket、ContentProvider、共享文件(这种方式的缺点是不支持并发写,同时需要手动操作IO)、AIDL、Messenger(底层实现也是AIDL)等。关于AIDL和Messenger的使用详见Android知识点总结(四)进程间通信可以发现Android中IPC方式的使用不是有诸多限制,就是使用起来比较麻烦,所以搭建一套简单易用的IPC框架是很...

2019-07-29 17:57:53

OverScroller的一些重要方法和属性

OverScroll与Scroll类类似,都是实现弹性滑动、惯性滑动的辅助类,只不过OverScroll出现的比较晚,功能更全面一些,可以实现边界回弹等。之所以说它是一个辅助类,是因为它本身并不能移动View,真正移动View的实现需要我们在回调方法computeScroll()中自己实现。基础方法getStartX()和getStartY()getStartX()滑动的起点x坐标,对...

2019-07-02 18:36:07

关于手动添加RecyclerView列表项导致Item里的EditText数据混乱的问题

如果没有手动添加Item这个功能,比较好处理一些,最简单的方法禁止复用holder.setIsRecyclable(false);,但如果有手动添加Item,或者要监听EditText的addTextChangedListener,这时就是禁止复用也没有效果。此时,就得使用绑定tag的方法:第一、为列表实体类添加一个属性uid,作为一个唯一标志,再创建实体类Data的时候,为这个属性设置一个唯...

2019-06-27 15:28:44

实现子view滑动一段距离后,让父view进行滑动

思路分析前期子view需要滑动,所以要获取事件,即此时父view不能拦截事件后期父view需要滑动,此时父view需要进行拦截,获取事件将上面的分析转化为伪代码://子view@OverridepublicbooleandispatchTouchEvent(MotionEventevent){switch(event.getAction(...

2019-06-05 12:50:55

sourceinsight安装、查看android源码

下载安装破解版https://pan.baidu.com/s/1-OdZf2gmkUn7_P2loLabXg提取密码:fy3s安装sourceinsight_4.0.86.0-setup.exe用sourceinsight4.exe替换掉安装路径里的同名文件运行出现一下弹框,选择第三个,导入下载包里的si4.pediy.lic文件即可查看android源码打开sourcein...

2019-05-28 10:39:47

Android知识点总结(五)进程间通信之Binder连接池

Android知识点总结(四)进程间通信上一篇文章记录了Messenger及AIDL的使用。其中AIDL的使用是最广泛的,其大致流程:首先创建一个Service和一个AIDL接口接着创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法(也可以直接使用匿名内部类的方式实现),在Service的onBind方法中返回这个类的对象然后客户端就可以绑定服务端Service,建立连...

2019-04-11 14:43:13

Android知识点总结(四)进程间通信

进程间通讯方式Android进程通讯方式有很多,如Socket、ContentProvider、共享文件(这种方式的缺点是不支持并发写,同时需要手动操作IO)、AIDL、Messenger(底层实现也是AIDL)等。使用MessengerMessenger是一种轻量级的IPC方案,可以在不同进程中传递Message对象。不适用与并发服务场景。下面是其常用方法源码/***...

2019-04-01 16:35:38

AndroidStudio编译报错org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:proces

AndroidStudio编译报错:org.gradle.api.tasks.TaskExecutionException:Executionfailedfortask':app:processDebugResources'.finishedwithnon-zeroexitvalue1AndroidresourcecompilationfailedOutput...

2019-03-20 16:32:45

从零开始手写一个组件化demo

根据上篇Android组件化学习文章,编写一个组件化demo,其结构如下:APP:主moduleLogin:登录组件Pay:支付组件,支付时需要判断是否登录Common:基础组件,包含基础库、公共页面等CommonBase:包含各个组件对外提供访问自身数据的接口、抽象方法等1、使用AS创建一个工程,同时创建Login、Pay、Common、CommonBase四个Libray效...

2019-03-01 18:45:55

Android组件化学习

组件化思想是对模块化的进一步演变,相对与模块化,组件化更加灵活,可以在application与library之间相互转换!无论是组件化还是模块化,都是对大型项目的一种耦合度的解耦,方便团队协作开发!上面是组件化的基本架构图,可以看到组件化一个很明显的特点就是分层!还有一个重点就是通信。架构图从下到上依次为基础层、组件层和应用层!基础层主要包含一些基础库如图片加载框架、网络框架等;组件层就是...

2019-02-21 23:49:32

Java函数式编程四之并行化操作

Java函数式编程三并行和并发并发和并行是两个不同的概念,它们的作用也不一样。并发是两个任务共享时间段,并行则是两个任务在同一时间发生,比如运行在多核CPU上。如果一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行。两者之间的区别如图:数据并行化本文主要讨论数据并行化。数据并行化是指将数据分成块,为每块数据分配单独的处理单元。...

2019-01-03 15:31:47

Java函数式编程三之收集器

Java函数式编程二本文主要介绍高级集合类和收集器方法引用Lambda表达式有一个常见的用法:Lambda表达式经常调用参数,如:student->student.getName()java8提供了一个简写语法,叫做方法引用,在这里插入代码片...

2018-12-20 20:00:05

Java函数式编程二之常用流操作

函数式开发旨在帮助程序员写出更好的代码,如Java8新引入的流(Stream)使程序员得以站在更高的抽象层次对集合进行操作!Stream是用函数式编程方式在集合类上进行复杂操作的工具。传统循环操作有很多弊端如需要写很多样板代码、行为意图不清晰等,嵌套循环更严重,另外传统操作对于并行开发也很麻烦!使用Stream对集合进行操作,可以避免这些。如:计算集合中大于8的元素个数List&amp

2018-12-20 17:05:39

Java函数式编程一之基础介绍

2018-12-13 15:57:35

Gradle相关知识总结

Gradle简介Gradle,是一个基于JVM的富有突破性构建工具,基于groovy,其build脚本使用groovydsl编写!任何一个Gradle构建都是由一个或多个project组成。每个project包括许多可构建组成部分,由多个tasks组成。每个task都代表了构建执行过程中的一个原子性操作,如编译,打包等。构建简单Tasktaskhello...

2018-12-07 10:20:56

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。