自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android中的消息机制Handler

什么是Handler?Handler是安卓消息机制的一个上层接口。handler通过发送和处理Message和Runnable对象来关联相对应线程的MessageQueue。1.可以让对应的Message和Runnable在未来某个时间点进行相应处理。2.让自己想要处理的耗时操作放在子线程,让更新ui的操作放在主线程。Handler的使用private Handler mHandle...

2019-03-13 09:24:37 346

原创 AndroidStudio版本升级带来的问题

之前都是用的AndroidStudio 4.1.3,但是要看一下Compose的东西,需要下载至少Android Studio Arctic Fox版本,这里下载的是Android Studio Bumblebee | 2021.1.1 Patch 1 for Mac (~928 MiB)。AndroidStudio从某个版本开始就使用了新的方式命名:Android Studio Arctic Fox、Android Studio Bumblebee等等。Apple M1 上使用Room数据库 构建失败

2022-02-08 17:06:40 1923 1

原创 2020.11.6----Android启动速度优化

启动流程1.点击桌面图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求2.system_server进程接收到请求后,向zygote进程发送创建进程的请求3.Zygote进程fork出新的子进程,即App进程4.App进程通过Binder IPC向system_server进程发起attachApplication请求5.system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送sc

2020-11-06 17:51:50 383

原创 2020.10.28----HashMap

基本概念//默认容量 16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;//左移4位//加载因子 0.75fstatic final float DEFAULT_LOAD_FACTOR = 0.75f;加载因子0.75的意思是这个表超过75%容量的时候,就会扩容。0.75是一个经过大量实验测算得出的比较好的值,不要问为什么不是0.6或者0.8什么的…HashMap的底层jdk1.8后是“数组+链表+红黑树”,之前是“数组+链

2020-10-29 15:52:35 174

原创 RenderScript在7.0上的bug

众所周知,RenderScript处理nv21转bitmap效果很高,之前也一直这么用没有出问题。但是因为设备重启功能,apk获取了系统权限,突然app就崩溃了。。。经查RenderScript在7.0上确实会导致crash。这里有篇博客写的很清楚。使用 RenderScript 时的一个bug。解决方法也很简单,就是换成v8包的RenderScript即可。import android.c...

2019-12-12 15:12:16 343

原创 Android 系统签名实现设备重启

最近在实现安卓设备重启的功能,最初利用下面方法实现的try { Runtime.getRuntime().exec("su -c reboot");} catch (IOException e) { Logger.d(Constant.TAG,"reboot:"+e.toString()); e.printStackTrace();}在某些设备上是可以用的,但是在...

2019-12-12 14:57:39 389 1

原创 Flutter系列笔记1--简介与环境搭建

Flutter简介Flutter 是谷歌公司开发的一款开源、免费的移动 UI 框架,可以让我们快速的在 Android 和 iOS 上构建高质量 App。它最大的特点就是跨平台、以及高性能。 Flutter 基于谷歌的 dart 语言。搭建开发环境这里我们是在windows上开发的,别问为什么。(穷)安装JDK安装AndroidStudiohttps://developer.and...

2019-11-25 17:15:35 400

原创 AndroidStudio安装上吊篇

他哭了…他真的哭了…我的电脑酷爱严寒,终究抵挡不住夏日的摧残。所以我不得不换了台电脑(公司的电脑,不是个人的,个人买不起)。然后开始搭建开发环境,我以为(事实证明真的是我以为)不会出什么问题,但是问题真的出现了。主要在编译已有的项目的时候,真的是一路走来一个坑接着一个坑…我已经记不清了,只记得下面两个坑。Unable to resolve dependency for ':app@debug...

2019-06-04 17:59:42 426

原创 Camera的一些总结

前言闲谈因为最近公司在做有关摄像头的项目(人脸识别、皮肤测试)。涉及到了usb摄像头和原生的摄像头,我们usb摄像头用的UVC的库来预览的,其实用Camera来预览也是可以的。开发期间查阅了一些资料,也走了很多弯路。所以现在项目上线了,写了这篇文章,希望能够帮到在Camera迷茫的小伙伴们…Camera和Camera2Android5.0以前,相机框架是Camera,Android5.0以...

2019-05-24 13:15:30 1016

原创 增量更新

前言增量更新的主要目的是省流量。关于在哪个页面更新、到底提示不提示更新、是否强制更新等等这都不是增量更新的重点,这些根据具体需求就好了。增量更新主要就是用更少的流量去更新。增量更新主要涉及两个操作:差分、合并。合并指的是当前版本与所对应的差分包进行合并,这个操作在客户端完成。差分指的是新版本与之前旧版本所产生差分包,这个操作在服务端完成。后台应该有上传apk的功能,比如上传3.0版本的apk,...

2019-05-14 10:32:34 720 3

原创 搞定所有常见的的Git操作

Git工作区Git仓库最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见。暂存区(索引)暂存已经修改的文件最后统一提交到git仓库中。工作区添加、编辑、修改文件等工作。Git操作流程初始化一个新的Git仓库//创建文件夹testmkdir test//在文件夹内初始化Git仓库cd testgit init //执行此命令后,会生成.git隐藏...

2019-04-27 17:14:50 323 3

原创 SignalR在Android上的实践

闲言因为我们后台是 .net,所以要求使用SignalR来实现推送。因为网上资料也不多,也走了很多弯路。现在记录一下,希望可以帮到更多的人。首先要确认后台用的是 asp.net 还是 asp.net core ,这两个的SignalR还是有区别的,我们Android用的库也不一样,我认为是不兼容的。如果使用的是 asp.net,这里有个库可以使用。java-client 但是不再维护了。也可...

2019-04-19 11:29:53 4592 6

原创 预编译和JNI

预编译C语言执行的流程:编译:形成目标代码(.obj)连接:将目标代码与C函数库连接合并,形成最终的可执行文件执行预编译:为编译做准备工作,完成代码文本的替换工作。头文件只是告诉编译器有这种函数,连接器负责找到函数的实现。define指令:定义标识#ifdef _cplusplus //标识支持C++语法也可以通过define防止文件重复引入举个栗子:头文件A....

2019-04-15 15:41:13 364

原创 哈夫曼树和哈夫曼编码

通常的编码方法有固定长度和不等长度编码。最优编码方案的目的是使总码长度最短。如果采用等长的编码方案,假设所有字符的编码都等长,则表示n个不同的字符需要位,例如三个不同的字符abc,至少需要2位二进制数表示:a(00)、b(01)、c(10)。如果每个字符的使用频率相等的话,固定长度编码是空间效率最高的方法。那么问题来了,等长编码方案,n个不同字符需要几位来表示呢?log2n取上限。利用字符的...

2019-03-26 09:37:44 927

原创 二叉树

树什么是树?树(Tree)是n(n≥)个节点的有限集合。当n=0时为空树,n>0时为非空树。任意一棵非空树满足:有且仅有一个称之为根的节点除了根节点以外的节点可以分为m(m>0)个互不相交的有限集,每一个集合本身又是一棵树,并且成为根的子数(SubTree)。另外,还有一些其它概念需要知道。结点结点包含数据元素及若干指向子树的分支信息。结点的度结点拥有...

2019-03-22 17:52:26 325

原创 FlatBuffers

数据的序列化和反序列化数据的序列化是程序代码里面必不可少的组成部分,当我们讨论到数据序列化的性能的时候,需要了解有哪些候选的方案,他们各自的优缺点是什么。数据序列化的行为可能发生在数据传递过程中的任何阶段,例如网络传输,不同进程间数据传递,不同类之间的参数传递,把数据存储到磁盘上等等。通常情况下,我们会把那些需要序列化的类实现Serializable接口,但是这种传统的做法效率不高,实施的过程...

2019-02-13 14:03:47 788

原创 项目笔记

本文只记录一些零散的小的知识点,并持续更新。1、EditText默认不获取焦点(默认不弹出键盘),点击后再弹出键盘//在EditText之前的一个控件设置android:focusable="true"android:focusableInTouchMode="true"2、EditText 文字位置EditText的gravity默认是center,如果是多行或者EditTex...

2019-01-02 11:22:33 226

原创 requires JDK 1.8 or higher ??

我本来想引入Guava(Google Core Libraries for Java)的,目标是使用其中的一个工具类方法。以下方式添加依赖:implementation 'com.google.guava:guava:27.0.1-jre'但是偏偏天不遂人意,出现了errors:Default interface methods are only supported starting wi...

2018-12-18 17:39:10 1132

原创 View.inflate()的参数到底该传什么

首先说一下产生问题的大致环境:ReclerView中,child布局我直接使用的是android.R.layout.simple_list_item_1,也就是在onCreateViewHolder方法中我使用的View.inflate(context,android.R.layout.simple_list_item_1,xx)然后我再onBindViewHolder方法中获取了child布...

2018-10-10 15:13:27 2683

原创 AndroidStudio导入库后不显示

我们以前在AndroidStudio导入库的步骤一般是File–&gt;New–&gt;import Module,然后选择库,然后Project Structure–&gt;app–&gt;Dependencies–&gt;点击加号添加–&gt;Module dependency–&gt;选择目标库。但是这次因为更新了AndroidStudio,导入库出现了一些出乎意料的事情。比如,库整个不显...

2018-09-25 20:10:41 807

原创 day02-python数据类型和运算符

1、注释2、变量3、标识符和关键字标识符由字母、下划线和数字组成,且数字不能开头。python区分大小写。不能使用python关键字作为变量名命名规则有小驼峰、大驼峰 小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog 大驼峰式命名法(upper camel...

2018-08-17 10:34:33 228

原创 day01-python的环境搭建

1、python的优点简单、易学免费、开源可扩展性、可嵌入性丰富的库2、python的缺点运行速度慢中文资料匮乏代码不能加密3、环境搭建https://www.python.org/downloads/下载安装即可,安装完后打开cmd,输入python可测试安装结果。Python 3.6.0 (v3.6.0:41df79263a11, De...

2018-08-14 23:41:49 204

原创 build目录下面某个文件无法删除??

今天上班路上突然下起了暴雨,就像贺函给罗子君送伞那天下的一样大,而我不是罗子君,所以我带了雨衣……(偏了偏了……)来到公司,电脑就开始抽风了,开机非常慢,开机后动不动就卡死。不断开关机操作后,趁着不怎么卡了就打开了AndroidStudio,然后一系列的报错啊,插件错、sdk错、jdk错……费了一些时间调好了,最后打包却提示build目录下面某个文件无法删除(具体是什么忘了),然后手动去目录下...

2018-08-08 14:33:28 1312

原创 ImageConverter引起的 invalid address or address of corrupt block 0xb7feab58 passed to dlfree

虹软人脸识别,其方法要传NV21格式的byte[], github上有一个虹软的Demo,是不是虹软工作人员写的不清楚,这个Demo里bitmap转NV21格式byte[]用的是一个第三方库https://github.com/gqjjqg/android-extend, 用法如下:ImageConverter convert = new ImageConverter();conve...

2018-07-18 23:20:57 1814 2

原创 Service调优相关

Service是一个后台服务,专门用来处理常驻后台工作的组件。即时通讯:service来做常驻后台的心跳传输。核心服务尽可能轻,很多人喜欢把所有的后台操作放在一个service里面,这是不太好的,因为“树大招风”。应该核心服务专门做一个进程,跟其他所有后台操作隔离。进程的重要性优先级(从高到低):1. 前台进程:用户正在交互的Activity;当某个Service绑...

2018-06-27 23:24:02 223

原创 Kotlin笔记(4)

中缀表达式使用中缀表达式就是想让代码更加简洁易懂使用条件:必须是成员函数或扩展函数;必须只有一个参数;参数不可能是可变参数或默认参数。class Person{ infix fun sayHelloTo(name:String){ println("你好${name}") }}val stenve=Person()stenve.sayHe...

2018-06-13 16:36:01 196

原创 Kotlin笔记(3)

get和set方法Kotlin中字段是私有的,会自动生成get、set方法。fun main(args: Array&lt;String&gt;) { val person=Person() //表面看是直接访问了属性,其实是通过get方法 println(person.name) println(person.age)}class Person...

2018-06-13 10:57:30 223

原创 Kotlin笔记(2)

for循环和foreachval str="abcde"//这个就相当于java中的高级for循环,// 但是java中的高级for循环不能用于字符串for (c in str) { println(c)}//带角标for ((index,c) in str.withIndex()) { println("index=$index c=$c")}str...

2018-06-11 14:39:44 332

原创 Kotlin笔记(1)

什么是KotlinKotlin是一门全栈语言。Kotlin就是一门可以运行在Java虚拟机、Android、浏览器上的静态语言,它与Java100%兼容。Kotlin除了自己的标准库之外,大多仍然使用经典的Java集合框架。Kotlin优点简洁(主要相对于Java)空值安全100%与Java兼容函数式编程协程DSL参考资料http://kotlin...

2018-05-20 17:22:25 326

原创 聊聊Android开发之微信支付不得不说的故事

聊聊Android开发之微信支付不得不说的故事整个微信支付是挺复杂的,但是根据微信官方建议,Android客户端需要做的事情其实很少,就是调起支付,而支付之前的工作交给服务端,包括生成预支付订单等等。。。一、 一些资源下载官方Demo : https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1官方介绍的整...

2018-03-14 21:21:03 720

原创 Scrapy 框架介绍与简单案例

一、Scrapy介绍Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛Scrapy 使用了 Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求官网:http://doc.scrapy.org/en/latest中文维护站

2018-01-09 11:06:06 2743

原创 BeautifulSoup4介绍与登录知乎案例

一 、BeautifulSoup4介绍和lxml一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxmlBeautifulSoup 用来解析 HTML 比较简单,

2018-01-01 23:56:24 1138

原创 初探Linux基础命令

1.Linux文件及目录 众所周知,windows下看到的是一个个驱动器盘符,但是在Linux下我们是看不到的,能看到的是文件夹。 ubuntu没有盘符概念,只有一个根目录,所有文件在它下面。 “计算机”里面的这些文件夹及文件都是根目录下的。 bin:放的程序相关的 boot:开机相关 dev:设备相关的配置文件 etc:程序配置相关 lib:一些库 home:里面有个python

2017-09-29 22:45:02 433

原创 无法确定Bitmap签名

在eclipse下进行NDK开发,我们一般会进入src目录,打开cmd,使用javah命令生成头文件。但是今天写Demo的时候突然报了一个错—无法确定Bitmap签名。那怎么办呢??Windows下解决方式如下:javah -classpath (你的sdk路径)/sdk/platforms/android-15(看你情况选择)/android.jar;. 包名.类型MAC下解决方案:javah -

2017-09-11 11:00:07 1165 3

原创 C语言速成篇

本人最近学习ndk,涉及到C语言,所以写下这篇略显肤浅的笔记……大神请忽略此文……一、HelloWorld#include <stdio.h> // 包含标准的输入输出的头文件, 类似java的导包#include <stdlib.h> // 包含标准的库函数main() { // 入口函数 printf("hello World\n"); system("

2017-08-20 23:43:35 9462 1

原创 AOP面向切面设计编程

本文将从理论知识、集成步骤、实践例子三部分介绍AOP,希望看到此文的朋友能对AOP有基本的认识。一、AOP基本知识OOP OOP全称Object Oriented Programming,面向对象编程,好处是高度模块化。AOP定义 就是我们把某个方面的功能提出来与一批对象进行隔离,这样与一批对象之间降低耦合性,就可以对某个功能进行编程。AOP的意义 把某个功能集中起来管理,降低耦合性A

2017-06-30 15:47:25 343

原创 Android中的事件分发(上)

不用我多说,相信大家都知道事件分发的重要性吧。它是Android知识体系中重要的一部分,当然对于初学Android的人来说是比较难的一部分,但是又不能不学,因为它是解决滑动冲突的理论基础,而且面试的时候面试官非常喜欢问这部分内容。 我不会单单的贴贴源码,我也不会单单的写个Demo打打Log,我也不会单单的写写结论。因为这篇文章里源码、log、结论都有……(哈哈开个玩笑),我觉得学习事件分发不能靠背

2017-06-28 16:22:58 296

原创 手把手教你NDK入门篇

NDK全称是native develop tools,用来交叉编译C/C++代码生成so动态链接库文件。交叉编译指的是在一个平台编译出另一个平台可以执行的代码。比如在操作系统为window、CPU架构为X86的平台编译出可以在操作系统为linux、cpu架构为arm的平台上执行的代码。一、需要的工具ndk r9:这里我用的是android-ndk-r9,当然可以去下载更新版本的。下载后解压,配置环

2017-06-19 18:20:16 428

原创 Toolbar常见用法总结

一、概述因为ActionBar设计不灵活,所以谷歌引入了新的控件Toolbar,用来取代ActionBar。二、使用方法1. 使用Toobar需要去掉Activity原有的标题栏,否则会报错。这里有三种方法可以去掉原有标题栏方法一:在代码中去标题栏//如果你的Activity继承的不是AppCompatActivityrequestWindowFeature(Window.FEATURE_NO_

2017-06-03 15:09:29 596

增量更新Demo

使用BsDiff开源项目实现的Android端合并,服务器端生成差分包

2019-04-22

FlatBuffers

FlatBuffers的工具,内含FlatBufferBuilder.java、Table.java、flatc.exe等文件或工具。

2019-02-13

空空如也

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

TA关注的人

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