各种坑爹bug记录——持续记录中

2017.7.18
GridView和ListView采用回收机制,简单地说:如果屏幕最多可以显示n个子View,那么内存中其实就只有这n个子View。当 滚动了之后,重新展现在屏幕的n个View是复用了之前的n个View。所以在GridView和ListView中,getChildAt(int position)方法中的position指的是当前可见的第几个子View。如果要获得GridView或ListView的第n个子View,那么position就是n-第一个可见子View的位置:
View view = listView.getChildAt(n - listView.getFirstVisiblePosition());

2017.8.23
入坑各种加密方式:由于需求特殊,加密后的字符串大小不能增加,所以采取了字符串位移运算或异或加密方式,一开始加密函数实现是用String作为参数,返回值类型也是String,测试中发现中文字符串加密后再解密是乱码。原因是中文字符的字节数据经过异或后会变成无效的UTF-8编码,然后将异或后的字节数据转String获取到错误的字符串,之后再解密该错误的字符串,所以就不能正确还原成原先的字符串。
解决办法:不使用getbytes(),而使用string的toCharArray()。toCharArray()返回的是"自然字符"。但是这个"自然字符"的数目和内容却是由原始的编码方式决定的。
如果我们使用new String(str.getBytes(), encoding)对字符串进行重新编码解码时,我们一定要清楚str.getBytes()方法返回的字节数组的长度、内容到底是什么,因为在接下来使用新的encoding进行编码解码时,Java并不会自动地对字节数组进行扩展以适应新的encoding。而是按照新的编码方法直接对该字节数组进行解析。

2017.9.04
在体验Android studio 3.0 Canary 8的时候,发现使用butterknife7.0.1时会报如下错误:

Error:Execution failed for task ':app:javaPreCompileDebug'.
Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration.
- butterknife-7.0.1.jar
Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior. Note that this option is deprecated and will be removed in the future.
See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.
经过一番谷歌后,解决办法如下:
在app.build中添加这么一句就可解决:

android{
defaultConfig{
 javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
}
}

2017.9.19
Android 6.0 关于Wi-Fi的改变
官网中,介绍了关于Android 6.0有关WiFi的变化。

微信截图_20170919001231.png

2017.9.29

  1. JAVA中日期:
    yyyy-MM-dd HH:mm:ss 返回24小时制的时间格式
    yyyy-MM-dd hh:mm:ss 返回12小时制的时间格式
  2. 在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intentdata)方法(不论你有没有显示调用setResult)

2017.10.25
自android 2.1版本开始,存放资源图片的文件夹由原来的一个drawable文件夹变成了drawable-hdpi、drawable-mdpi和drawable-ldpi,这是为了支持不同终端设备的不同分辨率。
drawable-hdpi、drawable-mdpi、drawable-ldpi的区别:
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA(480x800),FWVGA(480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如(320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA(240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片,同一资源的不同分辨率的图片应该命以相同的名称存放在不同的资源图片文件夹中。

2017.12.13
在使用SqliteDatabases的replace API时需注意:
如果在新替换的记录中, 有字段和表中的其他记录冲突, 那么会删除那条其他记录。(遵守唯一约束)
如果要使用replace,一定要有一个primary key,并且,该字段,是唯一区分到底是应该被update还是应该被insert的条件。
参考文章:
Sqlite3中replace语句用法详解
在Sqlite中通过Replace来实现插入和更新
android sqlite 完全用replace替代 insert 和 update 操作

2018.1.2
android sqlite db-journal文件产生原因及说明

2018.1.25
在使用Findbugs插件来检查代码bug时,发现大篇幅的报Non-transient non-serializable instance field in serializable class错误。在仔细研究了下后,找到了解决方法,在这里分享一下

结论:
1、如果要可序列化某个类,需要实现Serializable接口
2、为确保序列化与反序列化一致,UID必须不可改变
3、如果不需要序列化成员变量,那么可以将这个变量标为瞬时的,修饰符:transient
4、如果需要序列化成员变量的引用,那么这个引用也需要实Serializable接口

2018.2.27
BroadcastReceiver的生命周期,从对象调用它开始,到onReceiver方法执行完成之后结束。另外,每次广播被接收后会重新创建BroadcastReceiver对象,并在onReceiver方法中执行完就销毁,如果BroadcastReceiver的onReceiver方法中不能在10秒内执行完成,Android会出现ANR异常。所以不要在BroadcastReceiver的onReceiver方法中执行耗时的操作。
如果需要在BroadcastReceiver中执行耗时的操作,可以通过Intent启动Service来完成。但不能绑定Service。
2018.3.13
创建Dialog和启动Activity所需的上下文为什么必须是Activity?
出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是System Alert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的Context,否则将会出错。

而要启动一个目标Activity的context是非Activity类型,则需要设置TAG Task,即FLAG_ACTIVITY_NEW_TASK。其实,意思是,如果我们想要启动一个Activity,启动它的context必须要有一个任务栈。
2019.3.13
Android studio app 红叉无法运行项目
解决方案:close project--->把原来的项目记录删掉,并重新打开即可解决!

2019.4.3
No cached version of com.android.tools.build:gradle:3.2.1 available for offline
解决方案:File->Setting->Build,Execution,Deployment->Gradle->Android Studio->勾选Enable embeded Maven repository 再次编译运行没问题了(主要是针对不联网情况下离线配置gradle的问题)
原文链接:https://juejin.im/post/5b6a90e96fb9a04f933021e9

2019.4.10
Service Intent must be explicit的解决方案
解决方案:https://blog.csdn.net/pvpheroszw/article/details/77981553

2019.4.13
Activity在横竖屏切换时不走生命周期:
在AndroidManifest.xml我们通过设置activity的configChanges属性值
Android 4.0之前:android:configChanges="orientation|keyboardHidden";
Android 4.0之后:android:configChanges="orientation|keyboardHidden|navigation|screenSize";

2019.5.11

  1. JavaError:(1, 1) 错误: 非法字符: '\ufeff'Error:(1, 10) 错误: 需要class, interface或enum:
    经过查看,该文件采用的编码方式为UTF-8带BOM的格式,随后,使用NotePad++打开该文件,并将文件格式改为以UTF-8无BOM格式编码并保存之后问题得以解决。
Error:Execution failed for task ':samples-simplevideowidget:processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'E:\Android\SDK\build-tools\23.0.1\aapt.exe'' finished with non-zero exit value 1

一般是资源文件冲突文件,可执行
gradlew compileDebugSource --stacktrace -info进行定位。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,263评论 25 707
  • 黄昏望却远天红,一抹斜阳映幕穹。 绿柳花魂迷沃野,青山玉影醉晴空。 轻风淡淡潜芽嫩,细雾绵绵隐月朦。 阵阵兰香生画...
    姀月阅读 539评论 0 4
  • 做事总没有持之以恒的毅力,这样真的让我很颓废了.....每次想要下定决心的做一些事情,总在开始想象的很棒,但过了没...
    凛酱拒绝生气阅读 119评论 0 0