Android-app
jianpan_zouni
android行业 小兵一枚
展开
-
EditText设置值失效
原文:使用setText()方法设值进行数据回显后,再次editText上值无法更新,本无数据的时候也会显示最初设置的值。查阅很多资料,解决方法及原因如下:解决方法是给这个editText添加属性android:saveEnabled="false",原因是安卓view状态保存,旋转屏幕或打开一个活动后,onSaveInstanceState会保存了EditText的内容,然后在onCreate的时候把EditText设置成功了,但是随后会在->onRestoreInstanceState尝试原创 2020-08-19 09:21:11 · 806 阅读 · 1 评论 -
关于Android应用支持IPV6
今天看了一些关于Android应用关于支持IPV6的问题,简单记录ipv从地址来说比v4多了“[]”,长度更长1. 正常来说OKHttp,XUtils等上层网络框架是支持ipv6的。但是如果你的应用中用到了socket,比如长连接,或者是直接用socket进行数据传输等,这时就需要进行ipv6的适配了。后面适配时再补充2.Glide关于ipv6的支持。看到了https://www.jianshu.com/p/c8ebb4a3cc76。这篇文章介绍了绕过的方法,但看了glide的源码,发现有些不同原创 2020-07-17 10:14:06 · 9830 阅读 · 1 评论 -
MpAndroid 丢失精度问题
MpAndroid的数据都是Entry形式的,而Entry的x和y都是float,这就会出现一个问题,就是如果数据超过八位会出现精度丢失。如果利用markerview显示点的数值,会出现偏差至于为什么精度丢失,是因为java本身数据存储方式导致的,可以自行查资料。解决方案:Entry有好几个构造方法,利用这个:public Entry(float x, float y, Object data) { super(y, data); this.x = x;}利用data原创 2020-07-02 15:58:21 · 285 阅读 · 0 评论 -
Android插件化开发
Android插件化开发和组件化开发其实是类似的,都是为了便捷开发,提高效率。但插件化的一个好处就是可以实现在线下载更新安装插件,类似热更新的功能,而热更新的classloder技术在插件化中也是关键点。主要插件化框架:2019年 爱奇艺qisaw 腾讯shadow2017年 滴滴virtualapk 360 Replugin之前还有ali altas Driodplugin等等主要的技术我觉得是类似的,shadow号称0HOOK,但aiqiyi说看了企鹅的源码,是有hook的,有兴趣.原创 2020-07-01 11:16:43 · 763 阅读 · 3 评论 -
java加解密(cipher / mac/ signature)
前言本文主要讲解常用加密算法,消息摘要,二进制字符变换等的java实现,对于加密算法本身的原理只会做简单的介绍,详细的原理可百度。相关概念加密加密是指将可读取的明文作为输入,通过特定的变换操作得到不易读取的输出(通常是二进制序列),目前常用的加密算法包括 对称加密的AES/DES,非对称加密的RSA/DSA/EC,加密很重要的一点就是解密,无论多复杂的数学变换,一定可以通过相应的逆变换得到原始输入,这是的加密行为才有意义。hash(哈希变换)hash值又称散列值或者消息摘要,对转载 2020-06-19 14:31:41 · 1050 阅读 · 0 评论 -
EditTextView点击任意位置,可调起键盘
记录一下这个小问题EditText默认是第一行获取焦点的,直接设为match_parent是不能实现这个效果的实现思路:1.EditText可设置多行,android:lines=xx,根据实际调整lines的数值2.gravity为top,保证焦点保持在第一行<ScrollView android:id="@+id/sv_content" android:layout_width="match_parent" android:layout_heig.原创 2020-05-18 15:00:05 · 280 阅读 · 2 评论 -
Android遇到418错误,提示爬虫
由于公司设置了华为的拦截策略,Android短的app突然爆出418错误,提示疑似爬虫攻击。最后请运维去掉了华为的拦截。经过调研和事件,被确定为爬虫攻击,是因为user-agent的问题1.代码使用okhttp,okhttp默认的user-agent是okhttp/版本号2.如果写过爬虫的可能会有了解,有种反爬虫机制,就是有些商业数据是禁止爬取的,需要模拟浏览器的user-ag...原创 2020-04-27 10:11:29 · 6640 阅读 · 1 评论 -
蛋疼的问题记录
今天打开工程突然出现gradle sync一直转圈圈,但是没有任何操作,不能build,也不能run,无任何log找了一圈,在event log里面发现,Gradle sync failed: Illegal char <:> at index 10:这是十分蛋疼的,因为iml文件是as自动生成的打开看,也只是配置相关的东西解决:打开as的idea log:java...原创 2019-11-26 11:09:31 · 539 阅读 · 0 评论 -
life
onAttach(Activity) : called once the fragment is associated with its activity. 调用该方法,将fragment与activity相关联onCreate(Bundle) : called to do initial creation of the fragment. 调用该方法,将fr...转载 2019-04-10 11:44:33 · 160 阅读 · 0 评论 -
as run failed
D:\TemplateApp>gradlew compileDebugSource --stacktrace -info这个命令可以发现很多隐蔽的错误比如我run的时候爆出如下错误,很蛋疼,无从下手:org.gradle.execution.MultipleBuildFailures: Build completed with 1 failures. at org....原创 2019-04-10 11:20:29 · 207 阅读 · 0 评论 -
Android屏幕适配全攻略(最权威的官方适配指导)
https://blog.csdn.net/bz419927089/article/details/45419023转载:http://blog.csdn.net/zhaokaiqiang1992Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认...转载 2019-03-29 14:26:54 · 158 阅读 · 0 评论 -
android手机web页面调试
开始页面会一直空白,查询资料发现是因为国内无法访问 https://chrome-devtools-frontend.appspot.com,所以采取更改HOSTS的方法,步骤如下:1.打开C盘路径:C:\Windows\System32\drivers\etc\,找到hosts文件2.打开hosts文件,在末尾添加61.91.161.217 chrome-devtools-front...转载 2019-03-13 16:00:18 · 1730 阅读 · 0 评论 -
Android Http网络开发神兵利器
Android Http网络开发神兵利器 Android Http网络开发神兵利器 Http协议 HTTP简介 主要特点 Request Response Code Method Header 网络请求库 URLConnection...转载 2019-03-13 11:33:27 · 289 阅读 · 0 评论 -
HTTPS认证过程
HTTPS和HTTP的区别主要如下:1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进...转载 2019-04-15 10:22:23 · 13454 阅读 · 2 评论 -
直接安装打开和点击图标打开之不同
下面主要是https://www.jianshu.com/p/774c7fb83b99这篇文章的内容,但最后贴出来我们的规避方法,反正都是大家都懂的的方法问题复现方法(复现过小米、华为、三星):从文件管理器点击apk进行安装,安装完成后直接点击右下角的“打开”按钮,app被打开,点击home键,app进入后台,再点击桌面的icon进入app,app会再次启动一个MainActivi...原创 2018-11-28 16:39:42 · 764 阅读 · 1 评论 -
https及证书认证
一、HTTPS通讯原理Https是基于安全目的的Http通道,其安全基础由SSL层来保证。最初由Netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法。二、SSL协议通信过程1.客户端浏览器发送一个连接请求给服务器,服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类以及其他相关信息返回给客户端2.客户端浏览器检查服务器传送到CA证...转载 2019-04-12 17:05:27 · 33588 阅读 · 2 评论 -
消息摘要和数字签名
消息摘要算法简述定义它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。消息摘要采用单向Hash函数将需加密的明文"摘要"成一串密文,这一串密文亦称为数字指纹(FingerPrint)。它有固定的长度,且不同的...转载 2019-04-12 17:22:43 · 3400 阅读 · 1 评论 -
RSA加密的原理——为什么被公钥加密的可以被私钥解密?
RSA加密的原理——为什么被公钥加密的可以被私钥解密?目录 一,RSA 数学理论基础 二,RSA实现原理 三,RSA加密的过程 四,参考文献引言在密码学最开始,都是使用的普通加密模式 A 用加密规则加密了字符串m 然后发给B B 用A的加密规则来解密,得到原始信息m在这个过程中A必须把自己的加密规则告诉B,否则B无法解密这段...转载 2019-04-12 17:39:20 · 1438 阅读 · 0 评论 -
RSA加解密,加签以及验签
由于RSA算法是不对称加密算法,所以每次加密得到的数据都不相同,同理加签得到的数据每次也不一样。简单的说下不对称算法,就是两把不同,但是完全匹配的秘钥,去进行加解密,公钥对外提供进行数据加密,私钥自己保存,对加密的数据进行解密。所以私钥不要泄露。RSA算法原理:1、任意互质的两个质数p,q。2、得到连个质数的乘积n。3、得到两个质数的欧元函数f(n)=(p-1) * (q-1)...转载 2019-04-15 10:18:34 · 1361 阅读 · 1 评论 -
关于Gradle配置的小结
博文出处:关于Gradle配置的小结,欢迎大家关注我的博客,谢谢!前言使用 Android Studio 来开发 Android 工程的过程中,接触 Gradle 是不可避免的,比如配置签名、引入依赖等。那么 Gradle 到底是什么东西呢? Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言...转载 2019-07-03 17:01:18 · 160 阅读 · 0 评论 -
android studio 配置代码仓库
repositories {mavenCentral()maven { url "https://jitpack.io" }maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }maven { url 'http://maven.oschina.net/content/groups/public/' } ...原创 2019-07-13 17:08:14 · 820 阅读 · 2 评论 -
Lint found fatal errors while assembling a release target.问题的分析与解决
Lint found fatal errors while assembling a release target.问题的分析与解决转载请注明:Lint found fatal errors while assembling a release target.问题的分析与解决 | KaelLi的博客问题还原新的一期版本开发,过程比较顺利,测试那边的bug也比较少,正是美滋滋的打r...转载 2019-07-26 15:42:30 · 265 阅读 · 1 评论 -
凹凸屏
普通activity可以通过设置toolbar/statusbar等全面显示,但是如splashActivity就必须通过设置了包括navigator也是在style里面设置即可,不然有河边问题,而且图片会压缩或拉伸1. 适配长屏幕的全面屏我们首先要确保应用在长屏幕设备上 (纵横比大于或等于 18:9) 也能够正常运行,尤其是现在市面上长屏手机越来越多,而且这些设备往往同时还采用了凹口...原创 2019-09-27 13:32:04 · 392 阅读 · 1 评论 -
java的按值传递
java没有指针,在java中都是按值传递但是java中有对象引用,这里按值传递的是引用的地址1.java内存分配StringBuilder s = new StringBuilder("abc");public void test(StringBuilder stringBuilder) { stringBuilder = new StringBuilder("abcde...原创 2018-10-31 10:17:05 · 99 阅读 · 0 评论 -
View的测量
view的测量是发生在activity的onResume之后,所以在resume后才可以获取到view是我大小1.测量步骤:从ViewGroup到子view一层一层遍历测量,先测量子view的大小,父view的大小是根据子view的大小计算出来的Android源码中的测量过程是从performMeasure开始的,然后是measure,onMeasure,最后setMeasuredDime...原创 2018-11-27 17:30:02 · 404 阅读 · 0 评论 -
android命名空间
Android的命名空间大体上有三种: xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"android是系...原创 2018-11-30 13:57:42 · 589 阅读 · 0 评论 -
Android中Serializable和Parcelable序列化对象详解
转载:https://www.cnblogs.com/yezhennan/p/5527506.html学习内容:1.序列化的目的2.Android中序列化的两种方式3.Parcelable与Serializable的性能比较4.Android中如何使用Parcelable进行序列化操作5.Parcelable的工作原理6.相关实例 1.序列化的目的 (1)...转载 2018-11-29 15:30:25 · 134 阅读 · 0 评论 -
JVM内存分配与回收机制
1.JVM的配置 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:...原创 2018-10-30 10:45:59 · 199 阅读 · 0 评论 -
Android Runtime(一)
1.Android 架构Android上层是java,framework是java,native是c++,驱动是c 。连接起来的是jni,虚拟机如借用的图所示,Android Runtime连接了framework和lib,包括两部分:core lib和虚拟机(5.1开始art完全取代dv)2.Android 进程关系android启动是从init.c开始的,而且init是an...原创 2018-10-31 17:26:11 · 12960 阅读 · 2 评论 -
fragment文字描述生命周期
fragment是添加在activity上的碎片,具有类似activity的生命周期activity走到resume后,fragment开始执行 onCreate、onCreateView、onActivityCreated、onResume关闭时,先走fragment状态再走activity:fragment:onPause->activity:onPause 。。。切换f...原创 2018-10-24 11:41:33 · 222 阅读 · 0 评论 -
Android Studio-DMMS
DMMS是as分析问题利器,尤其是棘手的性能问题、内存分析、thread等相关问题1.Start Method Profiling :点击start->操作->stop,得到如下文件常用字段的属性说明如下:列名 描述Name 该线程运行过程中所调用的函数名Incle C...原创 2018-10-24 09:18:17 · 1172 阅读 · 0 评论 -
Binder提问
1.Binder效率高?Binder只拷贝一次数据,通过mmap,把Binder内科空间直接映射到用户空间2.Binder传输数据大小限制?内核中限制4M,APP限制1M3.目前启动的普通Binder线程数requested_threads_started还没达到上限(默认APP进程是15) ...原创 2018-10-26 14:17:06 · 107 阅读 · 0 评论 -
Binder-到底是本地Binder还是BinderProxy
到底是Binder还是BinderProxy,this is a question如果是自己写的service是统一进程是Binder,也就是直接调用,这个在编译后生成的IXXXX.java的asInterface中能看到如果调用系统的service,显然是跨进程的,是BinderProxy,这里也是在asInterface中转换的。这个流程就是很绕了,是native的BpBinder转化...原创 2018-10-25 17:32:28 · 2894 阅读 · 0 评论 -
Binder总结-使用篇
Binder不用多说,Android的核心机制之一,用于进程间通信,更加安全,只进行一次拷贝数据。1.创建aidl文件package com.example.davidzhaodz.myapplication;// Declare any non-default types here with import statementsinterface IMyAidlInterface...原创 2018-10-25 11:48:30 · 371 阅读 · 0 评论 -
AOP-aspectj
AOP面向切面编程,可以弥补OOP的不足。OOP讲究对象,把操作都放到对象中,讲究封装,而这种方式的缺点就是太对象化,而且OOP讲究功能单一,高内聚。比如添加log,log是一个对象,暴露出一系列的log方法供用户调用,添加log时,只能每个函数重复的添加。再比如埋点,事件跟踪,也只能一个一个的去添加。而AOP则很好地弥补这一问题AOP是面向切面编程,所谓切面就是具有同样需求的一类对象,函数。...原创 2018-10-22 17:13:36 · 301 阅读 · 0 评论 -
android-hybird(二)
”WebViewbe本身就是支持js调用Native代码的,不过WebView的这个功能在Android 4.2(API 17)一下存在高危的漏洞。这个漏洞的原理就是Android系统通过 WebView.addJavascriptInterface(Object o, String interface) 方法注册可供js调用的Java对象,但是系统并没有对注册的Java对象方法调用做限制。导致攻...原创 2018-10-19 17:17:37 · 110 阅读 · 0 评论 -
android-hybird(一)
hybird混合开发是现在应用开发中非常常见的1.成本低,展示丰富有些公司的产品刚刚开始可能甚至只投入后h5的应用,也就是你打开应用,都是h5页面。为什么呢,成本低啊2.h5展示,更新方便h5真是的web页面,是后台推送来的数据,由服务器随时更新,而应用端不用关心他的变化3.实际需要比如淘宝,京东,滴滴页面都有h5部分,都是混合开发,还有各种广告,都是web但是纯的h5...原创 2018-10-19 16:06:36 · 235 阅读 · 0 评论 -
JVM调优总结
转载:https://www.cnblogs.com/andy-zhou/p/5327288.html目录数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收...转载 2018-10-30 14:02:59 · 97 阅读 · 0 评论 -
Android Runtime(二)
接上一篇 走ZygoteInit 1.进入ZygoteInit的mainframeworks/base/core/java/com/android/internal/os/ZygoteInit.java public static void main(String argv[]) {522 try {523 // Start profil...原创 2018-11-01 11:03:58 · 1864 阅读 · 0 评论 -
数据结构之一
关于HaspMap 、 HashTable 、SpraseArray、 ArrayMap、ConcurrentHashMap1.Map接口都知道,是键值对的数据结构,如题几种都是Map基于hash快速查找的:HashMap HashTable ConcurrentHashMap基于二分查找:SpraseArray ArrayMap(这两货是android提出替代HashMap的,其...原创 2018-11-29 14:53:21 · 139 阅读 · 0 评论