Android-APP
m_xiaoer
这个作者很懒,什么都没留下…
展开
-
使用Okhttp访问网络可能出现的bug——EOFException异常
题引:同事跟我报告了一个bug,说是我的代码可能有问题,因为某个页面偶尔会请求不到数据。刚好他的手机遇到了这个bug,果断把他手机拿过来debug。bug解决方案Refer一、bugjava.io.IOException: unexpected end of stream on Connection{10.144.59.130:8291, proxy=DIRECT@ hostAddress=原创 2017-06-04 14:36:08 · 12594 阅读 · 1 评论 -
OkHttp请求回调中response.body().string()只能有效调用一次
OkHttp请求回调中response.body().string()只能有效调用一次,为什么呢?reponse.body()只能被调用一次?reponse.body().string()只能被调用一次!一、reponse.body()只能被调用一次? 很多人以为reponse.body()只能被调用一次,其实不然。 请看Okhttp源码中的Response.java文件的bod原创 2017-06-04 16:54:45 · 6786 阅读 · 0 评论 -
Android Studio Gradle配置相关问题
Android Studio-Gradle配置相关问题Gradle配置相关问题解决方案ps一、Gradle配置相关问题1、 AndroidStudio 打开项目在 Building gradle project info 一直卡住 2、 Android Studio 出现 Failed to open zip file 的问题 3、 Android studio 启动后卡在 refres原创 2017-06-30 11:05:41 · 399 阅读 · 0 评论 -
Android studio 启动模拟器出现 VT-x is disabled in BIOS 以及 /dev/kvm is not found
Android studio 启动模拟器出现 VT-x is disabled in BIOS 以及 /dev/kvm is not found- 问题- 解决方案- Refer一、问题1、VT-x is disabled in BIOS 2、/dev/kvm is not found二、解决方案VT-x is disabled in BIOS解决方案如下:1、 安装Intel x86 Emula原创 2017-06-30 11:40:46 · 10354 阅读 · 0 评论 -
HeaderGridView——可以添加HeaderView的GridView,已修复HeaderView偏移的BUG
基于Google提供的HeaderGridView,修复其HeaderView偏移的bugRefer一、基于Google提供的HeaderGridView,修复其HeaderView偏移的bug 最近在做一个需求用到了PullToRefreshGridView,其中的GridView也就是普通的GridView,并没有像ListView中那样的addHeaderView()或者addFoot原创 2017-06-09 20:10:39 · 1446 阅读 · 1 评论 -
给GridView的单元格加上分割线
最近的需求是需要写一个导航栏,导航栏上的item项不固定,可能2项,也可能3项,等等。我用了GridView来实现这一需求,这样只需要写一个item项布局,外加填充数据即可适应后续的界面变化。需求解决方案Refer一、需求 需求里,两个item项之间有一个分割线。需求图如下:二、解决方案 基于GridView,重写GridView的dispatchDraw实现来给单元格加上分割线。原创 2017-06-10 16:57:00 · 501 阅读 · 0 评论 -
修改ViewPagerIndicator的样式
Indicator的样式修改在values/styles中添加<style>创建<style>中使用到的drawable资源文件在Manifest中使用我们自定义的样式附用到的点九图片Refer第1步:在values/styles中添加<style><style name="StyledIndicators" parent="@android:style/Theme.Light">原创 2017-06-10 17:16:11 · 1546 阅读 · 0 评论 -
客户端HTTP协议缓存的研究
题引:为了提升用户体验,同时减轻服务器压力和降低网络带宽,技术总监和技术经理决定对APP做缓存处理,包括图片的三级缓存(这里不讨论)和网络请求的数据缓存缓存基本认识 1、缓存的分类 2、Chrome浏览器清除缓存客户端缓存机制 1、HTML Meta标签控制缓存HTTP头信息控制缓存 1、客户端请求流程 2、客户端缓存的几个重要概念用户行为与缓存实践 1、不同网络请求方式的缓存原创 2017-04-25 16:52:05 · 1028 阅读 · 0 评论 -
GridView嵌套在ViewPager中,ViewPager嵌套在ScrollView中,GridView显示不全问题
题引 ViewPager中的page是GridView,ViewPager嵌套在ScrollView中,ViewPager设置高度为MATCH_PARENT或者WRAP_CONTENT都显示不全。解决方案方法1 网上提出的解决方法是设置ViewPager的高度为固定值。 确实这样可以显示,但是这个固定值不好控制,不像一些广告banner可以设置固定的值,这里的item是GridV原创 2017-06-13 11:06:29 · 1998 阅读 · 2 评论 -
关于Android框架模式的浅研究
关于Android框架模式的浅研究MVC模式MVP模式MVVM模式MVC、MVP、MVVM三者之间的共同点MVC、MVP、MVVM三者之间的区别实践Refer一、MVC模式 1、MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。 2、用一种将业务逻辑、数据、界面显示分离原创 2017-06-06 14:52:09 · 432 阅读 · 0 评论 -
两个Activity之间跳转时必然会执行的是哪几个方法?
这是一道面试题,答案如下: 一般情况下比如说有两个activity,分别叫A,B。 当在A 里面激活B 组件的时候, A会调用onPause()方法,然后B调用onCreate() ,onStart(), onResume()。 这个时候B覆盖了A的窗体, A会调用onStop()方法。 如果B是个透明的窗口,或者是对话框的样式, 就不会调用A的onStop()方法原创 2017-06-06 15:33:59 · 9145 阅读 · 2 评论 -
缓存策略交互 — 最长使用期限和最低新鲜度
To help ensure that the freshest content is returned to the client application, the interaction of client cache policy and server revalidation requirements always results in the most conservative cache翻译 2017-06-01 14:11:44 · 319 阅读 · 0 评论 -
什么是ANR? 如何避免它?
这是一道面试题什么是ANR?用户行为Android不同组件ANR的超时时间不同解决方案一、什么是ANR? ANR,全称为Application Not Responding。在Android 中,如果你的应用程序有一段时间没有响应,系统会向用户显示一个对话框,这个对话框称作应用程序无响应对话框。原创 2017-03-16 20:12:49 · 15304 阅读 · 1 评论 -
Sqlite关于多线程的研究
研究流程缓存需求缓存场景多样化与缓存方案的统一网络请求的多线程场景导致sqlite多线程问题sqlite多线程问题的解决方案 单例(Singleton)或者sychronized——读读同步,读写同步,写写同步非单例(多读、一写)——读读并发,读写同步,写写同步非单例(多读,一写)——读读并发,读写并发,写写同步非单例(多读,多写)——读读并发,读写并发,写写并发Refer 一、原创 2017-04-28 15:20:06 · 776 阅读 · 0 评论 -
android/support/v4/hardware/display/DisplayManagerCompat$JellybeanMr1Impl.class
duplicate entry: android/support/v4/hardware/display/DisplayManagerCompat$JellybeanMr1Impl.class题引:同事需要使用第三方库,由于这些第三方库使用的v4包版本跟我们编写的项目所使用的v4包版本不同而导致了一个bug。引入recyclerview-swipe引入butterknifebug来了Instant Run原创 2017-03-13 20:42:54 · 1475 阅读 · 1 评论 -
Dangling metacharacter
想将一个URL分成两部分,以?号为分隔符。使用url.split(“?”)出错正确方式的编码方式其他正则及解决方案例子一、使用url.split(“?”) Dangling metacharacter错误提示,不能正确分割。二、正确的编码方式 url.split("\\?")三、其他正则及解决方案 +、*、|、/ 等符号在正则表达示中有相应的不同意义。 一般来讲只需要原创 2017-04-18 20:39:36 · 5226 阅读 · 0 评论 -
View标签与view标签引发的bug思考
题引:前些天想用View标签写个下划线,结果把View写成view了,出现了一个奇葩的bug。-bug -查看源码 03-09 15:35:28.654 29199-29199/com.jiudaifu.yangsheng E/AndroidRuntime: FATAL EXCEPTION: main原创 2017-04-18 19:46:55 · 1117 阅读 · 0 评论 -
MAC上没有.bash_profile该怎么办?
题引:配置Android开发环境,找不到.bash_profile启动终端Terminal进入当前用户的home目录,敲如下命令:cd ~创建.bash_profile,敲如下代码:touch .bash_profile编辑.bash_profile文件,敲如下代码:open -e .bash_profile保存文件,关闭.bash_profile更新刚配置的环境变量,敲如下代码:原创 2017-05-03 11:38:16 · 15587 阅读 · 0 评论 -
关于ETag和Gzip的基本认知和使用
题引:为了提升用户体验,同时减轻服务器压力和降低网络带宽,技术总监和技术经理决定对APP做缓存处理,包括图片的三级缓存(这里不讨论)和网络请求的数据缓存ETag的基本认识ETag的基本使用Gzip的基本认识Gzip的基本使用判读服务器是否返回压缩数据的方式服务端Nginx配置ETag和Gzip冲突的解决方案Refer一、ETag的基本认识以下四篇文章讲解的都是ETag的基本知识:原创 2017-05-10 11:30:59 · 2785 阅读 · 0 评论 -
前台广播——解决广播接收延时问题
解决广播接收延时问题FLAG_RECEIVER_FOREGROUND案例一、FLAG_RECEIVER_FOREGROUND该标识表示:当发送广播时,允许其在前台运行的接受者拥有更高的优先级,更短的超时间隔。二、案例 例子如下: Intent mIntent = new Intent("android.intent.action.xxx"); mIntent.addFl原创 2017-06-04 17:28:16 · 3269 阅读 · 0 评论 -
缓存策略交互 — 最长使用期限和最长过期时间
To help ensure that the freshest content is returned to the client application, the interaction of client cache policy and server revalidation requirements always results in the most conservative cache翻译 2017-06-01 13:55:13 · 785 阅读 · 0 评论 -
PANIC: HOME is defined but could not find Nexus_5_API_22_64-x86.ini file in $HOME/.android/avd
Mac下Android开发模拟器启动不了BUG解决方案一、bugPANIC: HOME is defined but could not find Nexus_5_API_22_64-x86.ini file in $HOME/.android/avd(Note: avd is searched in the order of \$ANDROID_AVD_HOME,\$ANDROID_SDK原创 2017-06-28 12:17:57 · 1671 阅读 · 0 评论