android studio找不到R.java文件怎么办? 第一种方式1.在output文件夹下面找到你的apk文件2.把apk文件拖进分析区分析,点击dex文件,假如你的项目进行了分包的话这里的dex文件可能会有多个3.找到你想查看R文件的包,比如我要查看QTextView这个类的R文件,就找到这个包4.往下翻就能看到R$String,然后右键showByteCode即可第二种方式直接打开resource.arsc即可...
android开发进阶必读 性能优化:性能优化总结1:findbugs :的使用性能优化总结2:leakcanary的使用(简洁易懂)性能优化总结3:app性能检测model(依赖即可使用)性能优化总结4:组件化混淆需要注意的地方关于性能优化的感悟源码分析系列:源码解读系列(二)EventBus3.1.1源码解读系列(三)网络框架之OkHttp3(上)–请求流程源码解读系列(三)网络框架之OkHttp3(下)–拦截器设计模式系列:java常用设计模式1——单例模式java常用设计模式2——Builder模式j
android11上使用weex 下载aarhttps://download.csdn.net/download/baidu_31093133/13110696这个aar是使用官网最新的代码打包的aar,使用这个aar可以解决weex在android 11上适配的问题1、去掉项目里的远程依赖“com.taobao.android:weex_sdk:0.28.0”改为aar依赖2、最新的weex包域名是org.apache.weex,所以需要修改与weex相关的问题的import包如果有问题,可以留言,我看到了会回复...
The option ‘com.android.build.gradle.overridePathCheck’ is deprecated. The option ‘com.android.build.gradle.overridePathCheck’ is deprecated.这是因为高版本的gradle移除了com.android.build.gradle.overridePathCheck替换成 android.overridePathCheck 后同步一下代码就行了
2019安卓面试题整理 目前已入职国内某一线大型互联网公司图片相关:项目里用到的图片格式jpeg,png,webp的各自有什么特点webp的优缺点什么是矢量图,特点是什么矢量图对应的另一种图片类型是什么,位图的特点是什么位图和矢量图的比较假设xxhdpi目录下有一个2M的图片,那么加载到内存的时候它占用的空间是多大如果把一个2M的图片放到hdpi目录下,它加载到内存的时候占用的空间是多大?为什么dra...
android 注解简介三: 自定义注解实现视图绑定 前文地址:android 注解简介一: java基本注解https://blog.csdn.net/baidu_31093133/article/details/82804151android 注解简介二: 元注解和自定义注解https://blog.csdn.net/baidu_31093133/article/details/82805618代码地址,请参考代码看博客哦,项目实现了:...
不要在finally中使用return 在项目中,切忌不要在finall语块中使用return因为finally 块中的 return 返回后方法结束执行,不会再执行 try 块中的 return 语句。也就是说try块中的return值会先保存起来,然后执行完finally中的代码后,才会把try块中的return值返回,所以finally中的代码逻辑是不会影响try块中的return值的。但如果在finally中使用return...
android @人功能实现,整体删除 实现@人功能,整体删除和添加,不可修改代码地址:https://github.com/GodisGod/test其中是根据Id来判断是不是同一个人的,图中的两个“王五29”一个id是29一个id是30大家可以参考代码,来实现自己的需求,所有逻辑都已经封装在了一个AtEdittext的类中AtEdittext类是自定义的继承了AppCompatEditText的一个子类,具体逻辑大家可...
8.0以上版本适配(转载) targetSdkVersion升级到28一些修改的地方https://www.jianshu.com/p/6ce99e03080f另外:9.0以上发现只显示glide默认的图片,这是因为9.0默认禁止了所有的Http连接或者其它图片显示异常或者网络访问异常的问题,都有可能是由于http连接被禁止造成的解决方法:application 的属性里加入 android:usesCleart...
Http协议的变化路程 转载:从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路 - helloJackJiang - 博客园https://www.cnblogs.com/imstudy/p/9234124.html
组件化过程中application的替换规则 1、如果功能module有application,主module没有,那么会自动引用功能module中的application2、如果主module有application,其它module没有,那么会自动引用主module的application3、如果主module中有自定义的appliction,其它module也有自定义的application,这个时候需要解决冲突,解决冲突后,最后编...
源码解读系列(三)网络框架之OkHttp3(下)--拦截器 首先套用官网的一句话来描述拦截器的作用:Interceptors are a powerful mechanism that can monitor, rewrite, and retry calls.拦截器是一个功能强大的机制,可以监视、重写和重试调用。我们首先总结一下okhttp默认添加的几个拦截器的作用1、RetryAndFollowUpInterceptor:重试和follow...
Error:Kotlin: Unsupported plugin option: org.jetbrains.kotlin.android:enabled=true findbugs 分析项目的时候遇到一个报错:Error:Kotlin: Unsupported plugin option: org.jetbrains.kotlin.android:enabled=true解决方法如下:打开findbugs的设置页面取消勾选这两个选项即可...
源码解读系列(三)网络框架之OkHttp3(上)--请求流程 1、OkHttp3的基本使用//1.1 GET请求 public void get() { //1、构建request Request request = new Request.Builder() .url("https://blog.csdn.net/baidu_31093133") .g...
gradle知识总结1:依赖 一:查看依赖关系:方法1:./gradlew 模块名:dependencies方法2:使用gradle工具如何定位gradle异常:进入红框中的目录,然后删除modules-2后重新编译方法3:安装gradle view插件方法4:./gradlew build --scan编译成功后访问这个网址,输入自己的邮箱,然后网址会给你发一个网址,访问即可二:关于依赖一:...
源码解读系列(二)EventBus3.1.1 1、EventBus的构造过程使用EventBus的时候,首先要获取EventBus构造方法是一个双重检查的单例模式。调用了 EventBus(DEFAULT_BUILDER);传入了一个默认的EventBusBuilder可以看到使用了EventBusBuilder来对EventBus进行了各种参数的配置2、EventBus的订阅过程subscriberMethodFin...
性能优化总结4:组件化混淆需要注意的地方 1、混淆的好处android studio 使用ProGuard来进行混淆,ProGuard是一个压缩、优化和混淆java字节码文件的工具,可以删除无用的类,字段,方法和属性,还可以删除无用额注释,最大限度的优化字节码文件,规避64K方法数的问题,并且还可以使用剪短而且无意义的名字来重命名已经存在的类、字段、方法和属性,增加逆向工程的难度。混淆可以减少APK文件的大小。2、混淆包含:压缩,优化...
webview使用过程中需要注意的地方 1、自定义的JsBridge的的方法一定要和h5里的方法名保持一致。2、当webView写在其它容器里,并且webView不再使用的时候,一方面要从容器中移除webView另一方面要记得调用webView.destroy();方法来销毁webView防止内存泄漏。3、调用 addJavascriptInterface(JsBridge, “testJSBridge”);的时候第二个参数如果是...
FragmentPagerAdapter和FragmentStatePagerAdapter的本质区别 当需要加载的页面较少且每个页面的数据相对变化较少的时候应当使用FragmentPagerAdapter当需要加载的页面较多,并且每个页面的数据量比较大或者数据经常变化,占用内存较多的时候的时候应当使用FragmentStatePagerAdapter它们两个的本质区别就在于,当切换页面的时候,FragmentStatePagerAdapter会remove之前加载的fragment从而将内存释...
关于fiddler使用的一个小细节(大面积请求失败的情况处理) 如果fiddler的网络访问请求出现异常而又不知道为什么的时候,注意看看这里是不是勾上了如果勾上说明即使和你的规则不匹配的请求也会发送出去,如果不勾说明不匹配的请求都会给你返回404。通常我们使用拦截功能的时候,Enable rules和Unmatched requests passthrough都会勾上,如果突然出现大面积请求失败,记得看看这里是不是出问题了。...
java常用设计模式12最终篇—桥接模式 本设计模式系列代码地址:GitHub - GodisGod/DesignPatternStudy: 设计模式学习demohttps://github.com/GodisGod/DesignPatternStudy定义:将抽象部分与实现部分分离,使它们都可以独立的进行变化。使用场景:A:抽象部分B:桥梁C:实现部分A----B----CA可能有多种情况,C也可能有多种情况,但...
java常用设计模式11—适配器模式 适配器模式定义:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器的使用场景:1、系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。3、需要一个统一的输出接口,而输入端的类型不可预知。总结:输入不可预...
java常用设计模式10—装饰模式 介绍:装饰模式也称为包装模式,结构型设计模式之一。基本框架:1、需要一个抽象方法类2、需要一个抽象装饰器类3、创建装饰器代码示例:1、创建抽象方法类和具体实现类/** * 抽象方法类 */public abstract class Component { /** * 抽象方法 */ public abstract void operate(...
java常用设计模式9——代理模式 介绍:代理模式也称为委托模式。定义:为其它对象提供一种代理以控制对这个对象的访问。代码举例:山中有一个大王,大王有一个喽啰,大王需要巡山来保证自己的地盘不被入侵,但是大王怎么能自己去巡山呢?所以就要喽啰代替大王来巡山。我们用代理模式描述这个场景//任务public interface Tasks { /** * 需要执行的任务: 巡山 */ void...
java常用设计模式8——模板方法模式 这个设计模式应该是最简单的设计模式,因为大家平时都在使用,可能只是不知道它还是个设计模式吧模板方法其实就是封装一个固定的流程,就像一个模板,开头是什么,中间是什么,结尾是什么,框架都搭好,然后再这个框架内进行具体的操作,不管操作有什么区别,整体的执行流程始终不会改变。举例:我们玩两款游戏,这两款游戏都要经过创建角色,设置角色名字,开始游戏和通关游戏四个步骤,虽然游戏内容不尽相同,但是流程都是...
java常用设计模式7——责任链模式 嘿嘿,这次介绍一个好玩的设计模式 — — 责任链模式相关代码下载:GitHub - GodisGod/DesignPatternStudy: 设计模式学习demohttps://github.com/GodisGod/DesignPatternStudy所谓责任链,顾名思义就是一个责任的链条,既然是链条那就会有结点。假设我们有ABC三个结点,如果A没法处理就把处理的责任交给B,如果B...
java常用设计模式6——状态模式 状态模式介绍:1、状态模式中的行为是由状态来决定的,不同的状态下有不同的行为。2、状态模式和策略模式的结构几乎完全一样,但它们的目的、本质却完全不一样。状态模式的行为是平行的,不可替换的,策略模式的行为是彼此独立,可相互替换的。3、状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类。4、状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。...
java常用设计模式5——策略模式 通常一个问题有多个解决方案的时候,我们会把每个解决方案封装到自己的类里面,这样可以避免在同一个类里通过if,else或者switch来判断使用哪种方案。比如:if(type == 1){ return fun1();}else if(type == 2){ return fun2();}else{ return fun();}fun(){...};fun1(){...};f...
java常用设计模式4——观察者模式 当被观察者的状态发送改变的时候,所有观察它的对象都会得到通知并自动更新。观察者模式UML图:Subject: 抽象主题。把所有观察者对象的引用保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除对象。ConcreteSubject:具体主题,在具体主题的内部状态发生改变的时候,给所有注册过的观察者发出通知。Observer:抽象观察者,是观察者的抽象类...
ViewHolder views must not be attached when created. Ensure that you are not passing 'true' to the at 如果在使用Recyclerview的时候出现下面的异常ViewHolder views must not be attached when created. Ensure that you are not passing ‘true’ to the attachToRoot parameter of LayoutInflate这说明onCreateViewHolder 方法写错了这句话的意思...
java常用设计模式3——工厂方法模式 1、工厂方法模式定义:定义一个用于创建对象的接口,让子类决定实例化哪个类2、工厂方法模式的使用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式多工厂方法模式代码示例:1、定义一个抽象的产品接口(非必须)/** * 抽象的产品接口 */public abstract class Product { ...
抽象类abstract class和接口interface对比 abstract和interface是Java语言中对于抽象类定义进行支持的两种机制,正式由于这两种机制的存在,才赋予了Java强大的面向对象的能力。区别抽象类abstract接口interface定义语法abstract class 类名称interface接口名称组成常量,全局常量,变量,构造方法,普通方法,抽象方法全局常量,抽象方法,默认方法权限...
java把时间转换为时分秒格式,如:11:04:05 public class TimeUtil { /** * 把时间转换为:时分秒格式。 * * @param second :秒,传入单位为秒 * @return */ /** * 把时间转换为:时分秒格式。 * * @param time * @return */ pu...
android api implementation android 3.0 新的依赖方式:依赖方式作用api和2.0的compile完全相同,参与编译和打包implementation比如APP依赖了Lib A,Lib A依赖了gson,那么App无法调用到gson,只能调用到Lib A。这种依赖方式可以让库只被当前model使用。compileOnly和2.0的provided一样,只参与编译不会参与打包...
android 注解简介二: 元注解和自定义注解 首先看一个自定义的注解:1、自定义注解public @interface MyAnnotation { int age();}可见定义一个注解非常简单,只需要使用@interface关键字来定义即可。同时我们可以看到,注解的内部可以定义变量,但是在定义变量之后必须加上括号()。使用:public class Test { @MyAnnotation(age = ...
android 注解简介一: java基本注解 注解定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。注解的功能建立在反射之上,通过注解,我们可以对程序进行注释操作。JDK1.5之后的系统中,内置了三个注解:@Override如果有方法需要子类覆写,那么会...
rxjava重试RetryWithDelay(复制即用) rxjava+retrofit访问网络的时候,我们经常需要用到超时重试的机制,这个时候需要用到retryWhen操作符,而retryWhen操作符需要传入参数:(final Func1<? super Observable<? extends Throwable>, ? extends Observable<?>> notificationHandler...
Repeatable 注解无效的问题 网上很多博客只说了Repeatable如何使用,但是很多博客都忽略的很关键的一点,就是gradle的配置。 这会导致按照网上的博客去写代码就会出现Repeatable不生效的问题。所以千万别忘了在gradle文件中加入下面的配置: 来表示你要引入java8,因为这个Repeatable注解是java8新增的 //指定java8 compileOptions { ...
插件化介绍五:Atlas的使用 简介 Atlas是伴随着手机淘宝的不断发展而衍生出来的一个运行于Android系统上的一个容器化框架,我们也叫动态组件化(Dynamic Bundle)框架。它主要提供了解耦化、组件化、动态性的支持。覆盖了工程师的工程编码期、Apk运行期以及后续运维期的各种问题。Atlas对app的划分如下图所示: 拆分 定位 说明 host 基础支持 包含独立的中...
插件化介绍四:热修复框架andFix使用 热修复:在用户无感知的情况下不用发版本就修复线上应用的bug。andFix:阿里的热修复框架,可以用来修复方法级别的bug,无法新增字段或者类。使用简单方便,支持Android 2.3到6.0官方地址: GitHub - alibaba/AndFix: AndFix is a library that offer hot-fix for Android App. https://g...
插件化介绍三:JVM的ClassLoader和DVM的ClassLoader的区别以及加载流程 插件化-classloader 双亲代理模式参考资料:两篇非常好的博客Android解析ClassLoader(一)Java中的ClassLoader | 刘望舒的博客 http://liuwangshu.cn/application/classloader/1-java-classloader-.html热修复入门:Android 中的 ClassLoader - 简书 http...
插件化介绍二:jvm和dvm的区别 转自: Android——区别DVM与JVM (2) - Chen_s - 博客园 https://www.cnblogs.com/Chenshuai7/p/5277807.html产生: DVM是针对JVM(Java Virtual Machine)而言的,因为JVM是Oracle公司(原SUN公司)的产品,担心版权的问题,既然Java是开源的,索性就研究了JVM,写出了DVM1、...
插件化介绍一:class和dex文件的区别 以下内容来源于网络,整理在此作为自己的学习笔记:class文件的作用class文件的作用是记录一个类文件的所有信息。 例如记住了当前类的引用this、父类super等等。class文件记录的信息往往比java文件多。class文件结构:1、一种8位字节的二进制流文件 2、各个数据按照顺序紧密的排列,无间隙 3、每个类或接口都单独占据一个class文件class...
ReactNative项目结构介绍 我使用的是webstorm来开发ReactNative项目 作为一个初学者,首先要学习一下新建的RN项目的结构 文件名 作用 android Android文件所在的目录 ios IOS文件所在的目录 node_modules 项目用到的库文件所在的目录 .babelrc es6代码转es5代码的插件。 一些插件,不需...
性能优化总结2:leakcanary的使用(简洁易懂) 1、引入库 2、操作APP,分析结果 3、如果是复杂的问题可以导出hprof文件到android studio 中继续分析官方地址: GitHub - square/leakcanary: A memory leak detection library for Android and Java. https://github.com/square/leakcanary1...
lifecycle的简单实用 MVP模式中,我们的presenter可能需要在activity销毁的时候释放一些资源通常我们会这么写 override fun onDestroy() { super.onDestroy() presenter.destory(): }如果有很多个类或者自定义的view都需要在activity销毁的额时候释放,可能会造成onDestroy...
ViewModel和LiveData存储数据和传递数据 开发中可能会遇到下面的问题:1、当activity旋转屏幕的时候,我们需要重新加载数据 2、fragment之间传递数据而使用viewModel可以很方便的解决这些问题,因为Activity重复创建的时候,持有的是同一个viewModel实例viewModel使用:1、创建一个类继承viewModel 2、使用liveData存储数据 3、在需要的地方接受数据变化 4、数据...
kotlin中 ? 和 ?. 和 ?: 和 as? 和 !!的区别 ? 可空类型kotlin和Java的类型系统之间的一个很重要的区别就是,Kotlin对可空类型的显示支持也就是说你可以声明一个变量,并且使用可空类型?来表示这个变量是可以为null的比如:java:int StrLen(String s){return s.length}//这个函数并不安全,原因是传入的参数s如果是null,就会报空指针异常kotlin:fun...
kotlin中的函数和变量 1、变量 //---------------- 变量 -----------------// val a: Int = 1 //不可变引用。不能在初始化之后再次赋值。对应java的final变量,只会被初始化一次 var b: Int = 0 //可变引用。这种变量的值可以被改变。相当于java的普通变量。// a = 2//val变量如果再次赋值会报错:...
kotlin的let,run,apply,also,takeIf,takeUnless,with的区别 代码地址:kotlin的run,let,apply,also,takeIf,takeUnless,with的使用和区别-CSDN下载 https://download.csdn.net/download/baidu_31093133/10582352声明了一个测试用的对象class TestBean { var name: String = "siry" var ag...
scrollview嵌套viewpager嵌套fragment嵌套recyclerview scrollview嵌套viewpager嵌套fragment嵌套recyclerview 效果图:问题1:scrollview嵌套viewpager,viewpager不显示的问题解决方法:给scrollview加上android:fillViewport=”true”属性问题2:viewpager只显示一个屏幕的数据,scrollview没法继续滑动。解决...
freco无法使用共享元素效果的解决方法 今天使用SimpleImageView的时候发现没法使用共享元素效果,看到github上的issue: Shared element transition · Issue #22 · facebook/fresco https://github.com/facebook/fresco/issues/22然后我在新的activity里加上这两行解决了(kotlin代码): ...
android studio failed to create JVM 导致无法启动的问题 通常这种问题是由于修改了studio64.exe.vmoptions文件导致 有两个解决办法: 1、删除C:\Users\用户名.AndroidStudio#.#目录 2、修改studio64.exe.vmoptions文件将xms和xmx的值修改的小一点,比如: -Xms128m(启动时的内存) -Xmx512m(运行时的内存)...
使用webview时js调用android代码要注意的地方 在android studio的Terminal中输入命令:git config –global user.name “xxx”即可修改git commit的作者名字
java常用设计模式2——Builder模式 Builder模式在Android开发中也很常用,通常我们在构建一个复杂的对象的时候会使用此模式,可以将复杂对象的构建和它的表示分离。特点: Builder模式通常为链式调用,关键点在于每个set方法都返回自身,也就是return this.代码示例: 如果我们要构建一个学生对象,要给这个学生设置年龄,性别,身高等参数public class Student { priva...
design editor is unavailable until a successful build 写布局的时候在preview里看不到布局效果解决办法:rebuild 项目,等待build完成就好了
reactnative环境搭建 参考网站: 搭建开发环境 - React Native 中文网 https://reactnative.cn/docs/0.51/getting-started.html#content1、安装Chocolatey:执行下面命令打开cmd ,输入下面的命令@powershell -NoProfile -ExecutionPolicy Bypass -Command "i...
android studio改变字体 在File–>Settings–>Editor–>Color & Fonts –> Font 中修改字体 去掉Show only monospaced fonts选项前面的勾就可以选择更多的字体了
java常用设计模式1——单例模式 1、懒汉式2、DCL双重锁检查式单例 : 最常用的单例模式书写方式3、容器式4、枚举式 : 避免反序列化创建新的实例的问题,写法简单效率高public class SingleInstanceTest{ private static SingleInstanceTest instance = null; //注意:单例模式的构造方法要私有化 pr...
android获取自己app消耗的流量 代码:传入自己应用程序的包名和上下文即可public class GetFlowUtil { public static FlowInfo getAppFlowInfo(String pakageName, Context context) { //获取到配置权限信息的应用程序 PackageManager pms = context.getPac...
android api 和 level的对应关系 android api 和 level的对应关系表 平台版本 API 级别 VERSION_CODE 备注 Android 7.0 24 N 平台亮点 Android 6.0 23 M 平台亮点 Android 5.1 22 LOLLIPOP_MR1 平台亮点 Android 5.0 21 LOL...
seekbar设置进度条颜色 seekbar设置进度条颜色效果图资源下载:seekbar设置进度条的颜色-CSDN下载 http://download.csdn.net/download/baidu_31093133/10242615核心代码 SeekBar style="?android:attr/progressBarStyleHorizontal" andro
java小知识点--方法重载和覆写的区别 方法重载和覆写的区别重载 overload覆写 override权限修饰符 区别 重载 覆写 英文单词 Overload Override 定义 方法名称相同、参数的类型及个数和顺序至少一个不同 方法名称、参数的类型及个数、返回值类型完全相同 范围 只发生在一个类之中 发生在类的继承关系中 权限
java小知识点--访问权限修饰符 访问权限修饰符公有 public私有 private保护 protected默认 default权限修饰符 权限修饰符 私有private 默认default 保护protected 公有 public 类 只有内部类允许私有,只能在当前类中访问 可以被当前包中的所有类访问 只有内部类可以设定为保护权限,相同包中的类
性能优化总结1:findbugs :的使用 Findbugs参考文章:FindBugs Report安全代码检查工具问题解析 - CSDN博客 http://blog.csdn.net/wwbmyos/article/details/50549650findBugs学习小结 - 时间朋友 - 博客园 https://www.cnblogs.com/doit8791/archive/2012/10/22/2734730.htm
xml文件里让recyclerview显示item布局 如果我们的item布局文件是item_layout 只需要添加tools:listitem属性即可在xml里看到item的布局 tools:listitem=”@layout/item_layout” 这个本来是listview的属性,在recyclerview里也可以使用 <android.support.v7.widget.RecyclerView
StringUtil:字符串处理的工具类 一个字符串处理的工具类(●’◡’●) 包含以下功能:判断应用程序是否安装 字符拆分成数组 MD5 加密 拼接后的字符串 替换字符串 判断多个参数是否都为空 将字符串转换成HTML格式的字符串 将HTML格式的字符串转换成常规显示的字符串 获取加密的手机号 检查手机号 验证固定电话号码 检查密码有效 根据string.xml资源格式化字符串 验证身份证号码 将元单位数字转
TimeUtils:时间工具类 一个处理时间戳的工具类(●’◡’●)public class TimeUtils { private final static long minute = 60 * 1000;// 1分钟 private final static long hour = 60 * minute;// 1小时 private final static long day = 24 * hour
DoubleUtils:double数据计算的工具类,避免精度丢失 项目中用到的一个double数据处理工具类(●’◡’●)/** * Double数据的操作 使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 * 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 * 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,
KeyboardUtil:软键盘显示隐藏工具类 一个控制软键盘显示隐藏的工具类(●’◡’●)public class KeyboardUtil { /** * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏 * * @param v * @param event * @return */ public st
FileUtil:文件处理工具类 一个文件处理的工具类(●’◡’●)public class FileUtil { private static final String TAG = "--FileUtil--"; public static final String separator = "/"; // ==================================================关于
LogUtil:打印日志工具类 一个打印日志的工具类(●’◡’●) 用 private static boolean DEBUG = true;来控制日志开关。public final class LogUtil { private static boolean DEBUG = true; public static void v(String tag, String msg){ logger("
NetworkUtil:网络状态检测工具类 一个检测网络状态的工具类(●’◡’●)public class NetworkUtil { /** * 检测网络状态 * * @param context * @return */ public static boolean isNetworkAvailable(Context context) { Connectiv
ToastUtil 一个简单的toast工具类(●’◡’●)public class ToastUtil { private static Toast mToast; public static void tip(Context context,String msg){ showToast(context,msg,Toast.LENGTH_SHORT); } public s
性能优化总结3:app性能检测model(依赖即可使用) 参考代码:GitHub - matthewYang92/NoobCoach: Android 性能监控检测工具(FPS、CPU、PSS、PrivateDirty) https://github.com/matthewYang92/NoobCoachAndroid cpu 使用率控件(浮动窗口)附源码 - CSDN博客 http://blog.csdn.net/romantic_energy/ar
统计某个进程的cpu使用率使用top命令 统计某个进程的cpu使用率使用top命令 假设我们统计包名是com.example.test.myapplication的app的cpu使用率top -n 1 | grep com.example.test.myapplication输出1次 输出10次
rxjava2代码实战5--distinct,filter,buffer distinct: 对数据源里的数据去重后输出 filter:根据过滤规则过滤数据 buffer:隔m个数取n个数代码地址:GitHub - GodisGod/Rxjava2Testhttps://github.com/GodisGod/Rxjava2Testdistinct:我们这里有一个数据源: private Integer[] datas = {1, 1, 1, 2, 2, 2, 3
rxjava2代码实战4--interval,take操作符clipdrawable制作图片进度条 interval:延迟执行一段逻辑或者间隔执行一段逻辑 take:截取前n个事件使用interval制作一个图片进度条效果图:activity代码:public class IntervalTakeComposeActivity extends AppCompatActivity { private ImageView imgLevelProgress; private ClipDra
rxjava2代码实战3--flatMap,concatMap操作符 flatMap,concatMapflatMap操作符可以将一个Observable转换为另一个Observable发射出去,并且可以将多个事件转化为1个,但是最后输出的事件序列顺序是不确定的,如果想要最后输出的事件顺序和源数据的顺序一致只要换成concatMap就可以了。 flatMap和Map操作符的不同是map一次只能转换一个事件。代码地址: GodisGod/Rxjava2Test h
ScreenUtil--可以获取view宽度,屏幕宽度,dp转px等 public class ScreenUtil { private int appHeight = 0; private int appWidth = 0; private static int StatusBarHeight; private Context context; private static ScreenUtil screenUtil;
rxjava2代码实战2--zip操作符 zip操作符将两个或多个Observable合并为一个并将最后的结果返回代码实战:网络请求1得到用户的ID 网络请求2得到用户的头像 ID和头像都得到之后返回给客户端效果图:这里使用了我的一个网络访问框架:请先理解这个网络访问框架再往下看哦(^__^) retrofit2.0+okhttp3+rxjava的封装(简单好用) - CSDN博客 http://blog.csdn.net/baidu
rxjava2代码实战1--Map操作符 map操作符可以将一个对象使用指定的方法转换为另一个对象再发射出去代码实战:根据学生成绩判断老师好坏并打印结果学生类:使用了Kotlin代码class Student(name: String = "", score: Int = 0) { var name = name var score = score}老师类:public class Teacher { privat
eventbus的使用(三)简洁易懂--EventBus3.0,如何使用annotationProcessor生成索引类 eventbus可以让我们在不同的页面不同的组件之间传递消息。接下来介绍一下如何使用1、导入eventbus 在gradle里面配置compile 'org.greenrobot:eventbus:3.0.0'在同一个activity里: 1、在创建页面的时候注册eventbus 2、在销毁页面的时候注销eventbus 3、使用eventbus.post发送消息 4、消息是一个Objec