android学习
文章平均质量分 71
YKamh
https://github.com/YKamh
展开
-
字体图片库集成与封装
简介今天刚刚学完一个字体图片库的集成和封装,那么字体图片库是什么呢?字体图片库就是用字体来代替很多图片。安卓开发也知道, 我们很多时候会把本地的图标啊图片放在drawable文件和mipmap文件下的。这样的话会有了一些坏处,就是我们的项目涉及到比较多的这些图片资源的时候,会让我们的项目体积变得很大,还有就是适应很多分辨率适配的时候图片就很难去保证在每一款屏幕上都能正常显示啦。而!字体就不一样了,原创 2018-01-18 18:17:48 · 638 阅读 · 0 评论 -
android studio目录结构
现在android studio已经成为了我们开发的主流工具eclipse已经不更新了,所以说对android studio的熟练使用也是我们应对开发的基础。面试过程中也常会问到android studio的目录结构问题。 在说目录结构之前首先要说两个比较容易混淆的概念。一个是Project,一个是model。 在Project下都有一个个的模块(.gr...原创 2018-03-01 21:29:23 · 194 阅读 · 0 评论 -
Android 构建
1、Android构建流程 第一步:aapt工具将包中的资源文件打包成R.java文件。 第二部:aidl工具,将项目中的aidl文件打包成Java接口。 第三部:会由Java Complier编译器将商入的R.java和Java接口以及源代码打包.class字节码文件,之后由android的dex文件把.class字节码文件编译成.de...原创 2018-03-03 11:54:09 · 209 阅读 · 0 评论 -
IntentService知识点
1、IntentService是什么 IntentService是集成并处理异步的类,在IntentService内有一个工作线程处理耗时操作,启动IntentService的方式和启动传统的Service一样,同时当任务执行玩的时候,IntentService会自动停止,而不需要我们手动控制或者stopSelf()。另外,可以启动IntentService多次,而每次耗时操作会以工...原创 2018-02-24 22:51:24 · 298 阅读 · 0 评论 -
Git版本控制
1、git中容易混淆的两个概念 1、工作区:工作区就是在电脑磁盘中所看到的文件目录。一个Project就是一个工作区,在工作区中有一个隐藏目录.git这里面是一些git版本库的内容。 2、gitignore文件:此文件在AS中是配置一些我们不想上传到版本库的文件。2、一些常用的git命令 1、git init:创建git仓库,当调用这个命令时在工作区中会多...原创 2018-03-04 22:37:39 · 133 阅读 · 0 评论 -
proguard代码混淆
1、proguard到底是什么 Proguard工具是用来压缩,优化,混淆我们的代码,主要作用是可以移除代码中的无用类,字段方法和属性是可以混淆。是对于即将要发布出去的app进行重新组织和处理。使代码不容易被反编译,即使反编译成功也很难读懂代码的意义。2、Proguard技术的功能 1、压缩:在打包的时候通过proguard检查并移除我们代码中没有用到的类、字段、属性。...原创 2018-03-05 15:52:31 · 354 阅读 · 0 评论 -
EventBus3.0用法全解析
前言EventBus是一款针对Android优化的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,以及将发送者和接收者解耦。如果Activity和Activity进行交互还好说,如果Fragment和Fragment进行交互着实令人头疼,我们会使用广播来处理,但是使用广播稍显麻烦并且效率也不高,如果传递的数据是实体类需要序列化,那么很显然成本会有点高...转载 2018-04-09 11:42:28 · 180 阅读 · 0 评论 -
com.android.dex.DexIndexOverflowException: Cannot merge new index XXXXX into a non-jumbo instruction
编译报错:com.android.dex.DexIndexOverflowException: Cannot merge new index XXXXX into a non-jumbo instruction之类的报错的话,多半是由于项目中引入的库多而且太大,这些模块需要生成一个Dex放进AAR包里给App使用,现在这个Dex生成不了了,提示太大,就是这个原因。解决办法:在Module的buil...原创 2018-05-18 12:01:18 · 179 阅读 · 0 评论 -
Android串口通信
用到谷歌开源serialPort api 下载链接:serialPort-api以下项目用的so库是谷歌原库,没有做修改新建项目:1、先把下载的api中这些文件拷进项目的相应位置 SerialPort类是咱们Android可以调用的类,jni目录下放着c源码和h头文件,jniLibs下面放的就是so库。注意:因为用的谷歌原生so库,所以SerialPort类的包名一定...转载 2018-05-31 10:33:53 · 370 阅读 · 0 评论 -
2017 Android GitHub 常用的开源库
原文地址现在 GitHub 上流行的开源库极大地节省了开发者从 0 开发的时间,很多公司和个人都在 GitHub 上开源自己的项目,今天我们就来整理一下 Android 开发中一些非常流行的库,也是我们必须掌握的,这样可以使我们在使用到时快速的查找到,这里的总结基本也都是自己在开发中用到的,也就是一些个人的见解,只做参考,不具有权威性。一、网络库1. RetrofitRetrofit 是 Squa...转载 2018-06-27 17:36:41 · 208 阅读 · 0 评论 -
Java线程篇——线程的开启
引随着开发项目中业务功能的增加,必然某些功能会涉及到线程以及并发编程的知识点。笔者就在现在的公司接触到了很多软硬件结合和socket通讯的项目了,很多的功能运用到了串口通讯编程,串口通讯编程的安卓端就是基于线程的方式和硬件保持通讯的。在此也当作笔记和总结一下自己所掌握关于线程的知识。 线程的生命周期及五种基本状态 关于Java线程,先了解一下Java线程的生命周期和物种基本状态,先上...原创 2018-10-23 15:28:00 · 260 阅读 · 0 评论 -
Java并发编程——volatile
引volatile可以看成是轻量级的低配版的Synchronized,他主要是作用于共享变量,保证共享变量的可见性。确保共享变量在主内存中一致地准确的更新通知到各个线程,这是Volatile的可见性,同时由于它是低配版的Synchronized,所以他也没有了Synchronized的一些功能,比如原子性。Java内存模型在理解有关Java并发编程的时候,我们是非常有必要的先了解一...原创 2018-10-26 17:29:03 · 267 阅读 · 0 评论 -
Java线程片——线程的关闭
引前文再续,书接上一回。前文讲述了如何开启线程以及开启线程的三种方法。本文主要围绕如何优雅的关闭Java线程。在我们寻求Java线程的关闭关闭方式的时候,我们也许会按住Ctrl键进入到Thread类中阅读源码,很快的我们就能找到一个stop()方法。似乎stop()方法就是结束线程的方法,但是事实恰恰与我们的猜想相反。stop()方法太过于暴力,会把执行到一半的线程给终止了,这样线程线程资...原创 2018-10-24 11:38:46 · 15401 阅读 · 0 评论 -
Java基础——Synchronized用法
引volatile关键字,今天分享学习一下他的大表哥Synchronized。Synchronized是Java并发编程中的同步机制关键字,他能后保证同一个时刻只有一条线程能够执行被关键字修饰的代码,其他线程就会在队列中进行等待,等待这条线程执行完毕后,下一条线程才能对执行这段代码。作用范围Synchronized在Java中是一种同步锁,他的修饰范围只要以下两个:修饰代码块 修...原创 2018-11-06 22:58:06 · 259 阅读 · 0 评论 -
HandlerThread知识点
一、HandlerThread是什么 1、HandlerThread的产生背景 开启子线程进行耗时操作,多次创建和销毁线程是很消耗系统资源的 本质是handler+thread+looper,是一个thread内部有looper 他本质上是线程类,他继承了thread。HandlerThread有自己的内部looper对象,可以进行looper循环。 通...原创 2018-02-22 15:37:37 · 280 阅读 · 0 评论 -
Asynctask知识点
一、什么是Asynctask Asynctask是封装了线程池和handler的异步框架,Asynctask中尽量执行短时间的异步操作,长时间的异步操作最好还是使用线程池。二、Asynctask的使用方法 1、三个参数 继承与Asynctask的后面的三个参数,第一个参数是在执行Asynctask所要传入的参数,这个参数可以...原创 2018-02-22 15:06:38 · 239 阅读 · 0 评论 -
Gradle sync failed: Cause: com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List
AndroidStudio升级到3.0.1后我新建的项目发现一直报这个异常。 一开始还以为是因为没有翻墙的原因,导致哪个类库下载失败。后面一查发现是跟Butterknife 最新的8.8.1版本冲突了。原有的依赖方法,目前不适用,得删一些地方,1.在project的gradle中删除Butterknife的依赖2.在module的依赖里面将Butterknife的改为 annotationPro转载 2018-01-18 18:31:11 · 783 阅读 · 0 评论 -
View的绘制机制
一、view树的绘制流程 mesure(是否重新计算视图大小)->layout(是否从新安置视图位置)->draw(是否需要重绘) 二、measure mesure的测量是一个树的递归过程,重上到下有序进行遍历,根据父容器对子容器的测量规格和参数获取子容器的长宽高,然后把子容器的长宽高返回给父容器进行统一的测量。 1、ViewGroup...原创 2018-02-25 23:21:09 · 387 阅读 · 0 评论 -
View的事件分发
一、为什么会有事件分发机制 安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这个问题就有了事件分发机制。图中,当我们点击View1的时候位于他下方的ViewGroupA和黑色的RootView都是能够响应的,为了能够确定到底是哪个View来处理这个点击事件,这里就引入了事件分发机制。PhoneWindo...原创 2018-02-26 15:50:55 · 171 阅读 · 0 评论 -
ButterKnife踩过的坑
个人练手的新项目想集成传闻2Wstart超级厉害ButterKnife。首先GitHub搜索一下这开源项目参照他里面的集成方法大致是下面这样添加依赖使用到的模块gradle顶上都要加上这一句话最后发现一直编译不通过,notfount com.jakewharton.butterknife。非常的不解,最后多亏以为网友的帮助在project gradl原创 2018-02-06 15:27:49 · 359 阅读 · 0 评论 -
Activity知识点
1、activity生命周期 什么是Activity?android是用户交互的入口他提供的界面让用户进行滑动点击等等交互, 这就是Activity。 Activity的4中状态: running:用户可以点击屏幕等等操作,然后屏幕会做出响应,他是一个Activity处于栈顶的状态。paused:表明Activity失去焦点,或者被一个非全屏的ACtivity占据,或者是一个透明的Activity...原创 2018-02-07 14:58:02 · 187 阅读 · 0 评论 -
Broadcast与Receiver广播接收器
1、广播 1、广播的定义 广播是一种广泛运用的在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent可以携带我们要传输的数据。广播的实现机制是比较类似于Java设计模式中的观察者模式。 2、广播的场景 A、同一app具有多个进程的不同组件之间的消息通信。 B、不同app之间的组件之间消息通信 ...原创 2018-02-13 15:33:12 · 954 阅读 · 0 评论 -
bitmap
1、Recycler 当bitmap要被回收的时候,要分两部分回收,一部分是Java中的内存,另一部分是native中的内存。 在释放bitmap内存的时候,会释放和这个bimap有关的内存同时清理数据对象的引用但是这里处理对象的引用不是立即清理数据,就是说当你调用Recycler方法时并不会直接清理native的内存,只是给gc发送一个指令,让他在其他没有引用这个bi...原创 2018-03-07 15:39:18 · 2310 阅读 · 0 评论 -
GreenDao数据库-简介
简介:android原生提供的api给我们带来哪些不便的地方呢?1、要手动拼装sql:比如创建一张表需要自己手动拼写SQL语句2、要自己写操作数据库的常规代码:比如打开数据库,跟某张表进行关联,关联完成后将数据插入到该表,这些都是大量类似重 复的东西。3、不能把数据库中的数据映射成对象4、没有实现级联查询GreenDao是什么?http://greenrobot.org/greendao/ (...原创 2018-02-08 11:01:24 · 226 阅读 · 0 评论 -
Fragment知识点
1、Fragment为什么被称为第五大组件? 1、Fragment为什么被称为第五大组件 Fragment跟其余的4个组件一样,具有自己的生命周期。在android3.0的引入,起初是为了给大 屏幕设备更灵活展现UI所用到的。之后呢大家更偏向于Fragment的UI开发是由于Fragment比Activity更加节省内存,同时UI的切换效果更加舒适。2、Fragment加载到Activity的两...原创 2018-02-08 12:12:45 · 343 阅读 · 0 评论 -
ListView缓存
一、什么是ListView ListView是一个能数据集合以动态滚动的方式展示到用户界面上的View。二、ListView适配器模式 ListView适配器Adapter是一种MVC的模式,Adapter就是为了把数据和View进行分离开来。Adapter模式最重要的就是让ListView绘制他需要相应的数据到他的Item上。getView方法中就是为了绘制每一个It...原创 2018-02-27 23:42:47 · 391 阅读 · 0 评论 -
WebView安全漏洞问题
一、WebView常见的一些坑 1、android API level 16 以及以前的版本存在远程代码执行漏洞,该漏洞由于程序没有正确限制使用webview.addJavascriptInterface方法,远程攻击者可以通过使用Java ReflectionAPI利用该漏洞执行任意Java对象方法。 2、webview在布局文件中的使用:webview写在其他容...原创 2018-02-17 14:19:02 · 581 阅读 · 0 评论 -
Binder知识点
一、Linux内核基础知识 1、进程隔离/虚拟地址空间:进程的隔离就是为了防止进程A直接操作进程B的数据;进程A的虚拟地址空间和进程B的虚拟地址空间是不同的,这样可以防止进程A的数据可以写到进程B里main;不同进程之间的数据是不共享的,而他们如果需要通信,那么就需要通过Binder机制来进行通讯。 2、 系统调用:内核的保护机制来告诉应用程序,你只可以访问那些资源,不...原创 2018-02-17 14:59:23 · 223 阅读 · 0 评论 -
Handler知识点
一、什么是Handler? Handler是安卓消息机制的上层接口,在子线程中进行耗时操作后如果需要更新UI就把消息发送给Handler重写Handler的handlerMessage方法进行更新UI。Handler通过发送和处理message和runnable对象关联对应线程的MessageQueue。 1、可以让对应的Message和Runnable在未来某个时间点...原创 2018-02-18 14:04:19 · 221 阅读 · 0 评论 -
Flutter入门:开发环境搭建
什么是Flutter极速构建漂亮的原生界面!Flutter是由Google于2018年2月推出的移动UI框架,可以极速在ios和Android上构建质高质量的原生用户界面。Flutter可以与现有的代码一起工作。在去世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费和开源的。 ...原创 2018-11-14 21:43:40 · 911 阅读 · 0 评论