![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 81
zhsf
专注于基于图像的分类、目标检测、语义分割以及检索领域
展开
-
基于ORMLite封装的数据库操作工具类
EasyDB基于ORMLite封装的数据库操作工具类GitHub:https://github.com/MrZhousf/EasyDB功能点支持主键、索引支持增、删、改、查支持多条件查询、排序、统计支持分页查询,分页查询只需要定义每页条数即可支持批量处理支持数据库升级,使数据库升级更为简洁完整的日志后续优化中...引用方式Mavendepen原创 2016-12-16 09:46:57 · 977 阅读 · 0 评论 -
App运行速度分析以及初步优化方案
App运行速度分析以及初步优化方案一、 App运行速度分析(1)硬件约束CPU主频,多核;CPU主频决定手机的运算速度,多核则更多体现在并发任务方面。内存:运存与内存(RAM+ROM)图1-1 移动端内存示例图运存是指手机运行程序时的内存,也叫RAM简称运存;RAM越大,手机可运行的APP应用程序越多,运行越流畅,目前RAM基本是2GB够用,3GB流畅,4GB极原创 2016-12-16 10:32:42 · 4750 阅读 · 0 评论 -
Android之文件断点续传
之前在项目中做过Android端文件断点下载模块,采用RandomAccessFile保存零时文件,通过对上传文件的物理路径path进行MD5加密判断是否为断点文件,如果是则进行断点下载,最后处理好下载进度,整个业务逻辑很简单,demo请参考https://github.com/MrZhousf/OkHttp3 ,这里就不再赘述了。那么本篇要说的是Android端怎么处理断点下载文件,首先我们原创 2017-04-10 13:37:55 · 802 阅读 · 0 评论 -
Android之团队开发时高德/百度地图出现INVALID_USER_SCODE
初次集成前端地图(高德/百度)的同志都可能会遇到INVALID_USER_SCODE提示,虽然基础地图功能没有影响,但是这个提示直接Toas给用户的,真是够了,如果集成地图导航时可能因为该原因无法打开导航页面。那么我们就研究下为啥出现这个INVALID_USER_SCODE提示。根据地图服务提供官方说明,剑指签名文件SHA1安全码不一致导致的。既然官方给出了说明那我们就检查下签名文件吧。在原创 2017-04-10 14:34:03 · 1293 阅读 · 0 评论 -
Android之上传多个文件至php服务器,php服务器只能接收最后一个文件问题
在维护OkHttp3开源库过程中经常面临一些使用者的问题反馈,例如增加或升级某种功能、出现bug、不会使用等。这些问题也只能一点一点解决,既然开源当然要尽自己最大能力负责到底,对他们提出的问题也得耐心的回答。前不久升级了OkHttp3库,支持了单次请求上传多个文件功能。实现该功能时,我采用了基于SpringMVC的Java后台,完美通过测试。但是新功能上线不久后,就有同志反映说多个文件上传有问原创 2017-04-12 15:34:38 · 2000 阅读 · 1 评论 -
网络请求工具类之OkHttp3封装(支持缓存、日志、拦截器、断点下载、上传等)
网络请求工具类之OkHttp3封装:支持缓存、日志、拦截器、断点下载文件、上传文件、http/https、Gzip压缩、批量上传、批量下载、上传下载进度、同步请求、异步请求等原创 2016-06-20 14:00:04 · 12530 阅读 · 5 评论 -
Android Studio自定义插件编写——Android Plugins
AndroidPluginsAndroid Studio 插件,快速生成代码。功能点Double Check 单例生成确认对话框生成后续优化中…引用方式1.检出AndroidPlugins项目2.复制项目根目录下的AndroidPlugins.jar到C盘(自定义)3.打开Android Studio -> Settings -> Plugins -> Install plugin f原创 2017-07-17 21:26:29 · 1782 阅读 · 0 评论 -
WebRTC之音频问题:Platform AEC state can't be modified while recording
在开发WebRTC的Android端时遇到一个奇怪的问题,Android端与PC端视频时听不到PC端的声音,其他一切都正常。该问题的出现时由于关闭了shegnyin碰到一个错误:“Platform AEC state can't be modified while recording”这个错误发生在交换SDP过程中,从错误的语义中可以大致判断出是声音引擎抛出来的,该错误直接导致Androi原创 2017-08-01 11:30:30 · 1370 阅读 · 1 评论 -
Android之Gson时间格式不一致导致后台解析错误问题
采用Gson封装Json数据与后台进行交互,Android端与后台接口通常对数据中的Date格式需要做统一处理,这样就能保证Gson正常解析。但在不同的jdk版本的环境中,这样处理也不能百分百保证没有问题,笔者在实践中就遇到这样的问题:后台的Gson解析方法只能接受12时制的时间格式,24时制的时间解析发生错误。这是24时制,后台解析失败导致业务处理失败:{"date":"Aug原创 2017-08-20 17:23:08 · 1974 阅读 · 0 评论 -
Android之引用包含远程依赖库的aar(引用aar时找不到arr的远程依赖库问题)
远程仓库请参考:https://github.com/MrZhousf/AARaar引用很简单,将sdk-zhousf-1.0-20170907.054540-1.aar复制到libs包下,在项目的build.gradle文件中增加以下代码即可:compile(name:'sdk-zhousf-1.0-20170907.054540-1',ext:'aar')但是如果aar中包含了远...原创 2017-09-07 16:54:33 · 22609 阅读 · 3 评论 -
Android之如何集成第三方组件或框架
Android开发无非就是数据与显示的处理,而这两大块每个阶段都会衍生出新的技术或第三方组件以及框架,在一个产品项目的正常迭代过程中会面临一些技术框架的选择,这时候我们通常就要考虑Android如何集成第三方组件或框架的问题了。面临该问题的场景:1、搭建项目初期框架,解决耦合问题,考虑扩展性2、项目重构需要替换第三方组件代价大画个大致的集成第三方组件或框架的示例图:从上原创 2017-11-02 12:14:22 · 1424 阅读 · 0 评论 -
Android之Application引用方式
Android开发时,Application一般都放在APP中,Lib模块如果想引用Application则需要在APP中进行传递,然后在Lib模块中用静态变量进行保存。然而这种方法不应该是Android推荐的,从Android Studio提示【Do not place Android context classes in static fields; this is a memory leak原创 2017-11-30 14:43:52 · 8514 阅读 · 0 评论 -
Android之基于Realm、OkHttp3封装的公共数据管理系统DMS
任何项目中都应该有公共数据的维护系统,然而公共数据的维护也是一项耗时耗力的工作。以用户信息为例:* 方案一:采用静态类 用户信息包含用户的基本属性,状态等,许多项目中会简单使用静态类来保存用户信息。 采用静态类保存用户信息可能在手机内存不够的情况下被虚拟机释放(请参考jvm垃圾回收机制)。 一旦用户静态类被释放,项目中调用时会面临着这空指针而导致app崩溃的风险。*原创 2016-09-01 17:32:52 · 900 阅读 · 0 评论 -
Android之AsyncTask异步任务——防止内存泄露
Android的异步任务有很多实现方法,最常见的如Handler、Thread、AsyncTask;还有一些开源项目也可以做到异步任务和线程间通信等功能,例如:EventBus、RxAndroid等,我们这里就不讨论用哪种实现方式更好,只是根据实际需求进行合适的筛选。笔者公司的项目算是大型的互联网金融类的App,由于历史架构原因未用到一些新的开源项目,也不能盲目引入这些开源的项目,所以只能在H原创 2016-07-25 11:20:06 · 2181 阅读 · 0 评论 -
Android之XML生成与解析工具——XmlSerializer
开发Android项目时会遇到各种数据的存储与获取,然而保存数据的方式有很多中,例如SQlite数据库、网络服务、XML、文件流等。在面向对象开发的人员肯定偏向于封装数据模型为对象进行反射等操作获取信息,这就需要编写一些特定场合下的工具类了。本人在开发一款医疗APP时就遇到将XML格式的数据保存到客户端本地,需要时再进行解析。这里就总结下XML的生成与解析工具的编写。将数据(即数据模型)传入工原创 2016-01-19 14:13:39 · 1386 阅读 · 0 评论 -
Android之替换APP字体——Typeface
公司客户端开发分为IOS组、Android组与HTML5组,在字体统一上就出现了问题,需要Android采用IOS的字体,这样就只能替换APP字体了。现在才发现Android开发有时候就是很苦逼,特别是拥有IOS开发组的公司,因为不管在设计风格、逻辑、效果都要以IOS为准,其实大家上网搜索下就会发现许多Android的效果都是模仿IOS的(例如横向滑动删除),这种趋势让身为Android程序员情何原创 2016-01-19 15:19:34 · 2541 阅读 · 0 评论 -
Android之AlarmManager闹铃提醒工具类
Android的闹铃提醒有时候挺折腾人的,底层的提醒业务注册是根据requestCode来标识的,这点一定要牢记。其次,闹铃提醒的周期算法也有点麻烦,比如某个提醒需要在工作日提醒,而另一个提醒只在工作日提醒,这时候就要区分开了。由于时间有限,暂时编写个闹铃提醒的工具类,已经过上线测试,代码如下:代码较为简单就不逐行解释了。import android.app.AlarmManager;i原创 2016-01-19 14:52:11 · 795 阅读 · 0 评论 -
Android之WebView——解决加载Https以及根据网页动态设置WebView高度等难题
凡是和WebView打交道的朋友们都或许有不少感慨,不管是页面管理、回退、缓存、页内跳转、交互等都会遇到许多问题,特别是在加载网页时,WebView会根据页面的高度增加而增加,但是不会随网页的高度减小而减小,这个或许是Google封装的WebView的一个小缺陷吧。像这种需求估计用到了ScrollView与WebView组合了,这种情景是Google不建议的,但是没有办法产品经理要这么干,非要页面原创 2016-01-26 10:45:14 · 7297 阅读 · 1 评论 -
Android之.9图片——Drawable、BitmapDrawable、NinePatchDrawable之间转换
项目中使用afinal框架加载网络图片,大家都知道在加载时设置一个默认显示的图片来占位,然而这个默认的图片如果是.9图片就无法显示了,所以需要自己转换下。这里涉及到Drawable 转 bitmap时需要区分drawable是NinePatchDrawable还是BitmapDrawable,如果是NinePatchDrawable就不能直接转为BitmapDrawable来取得Bitmap了,为原创 2016-02-17 14:05:05 · 4387 阅读 · 0 评论 -
Android之afinal框架的DB——删除数据表Bug
公司的项目属于大型的综合型项目,Android开发部就有二十多号个人,可见项目的更新迭代之快。然而项目中使用了一些开源的框架,比如afinal,随着运营的时间,afinal框架版本一直没有升级,这时候就需要自己去修复这些开源框架的bug了。最近接到产品部新需求,需要在各个功能块的二级首页增加缓存功能,接到任务后评估了一下,任务级别为二级,开发难度级别为三级,就直接建立任务安排了一下。本来以为挺简单原创 2016-02-18 10:26:13 · 1324 阅读 · 0 评论 -
AndroidStudio之Module的创建与配置
Android Studio 2.x 的版本更新出现一些新的特性,请参考:http://blog.csdn.net/wirelessqa/article/details/51111273该版本的迭代也意味着Android开发人员可以将精力放在代码实现上,恋旧的人也该告别Eclipse了。关于Android Studio的安装、配置和升级比较简单,暂不做介绍。如今的项目大部分都是集成项目,而原创 2016-05-04 17:46:45 · 19701 阅读 · 2 评论 -
Android设计模式之建造者模式——AlertDialog
建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式(引自百度百科)。在建造者设计模式中,有以下几个角色:1 builder:为创建一个产品对象的各个部件指定抽象接口。2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。原创 2016-05-23 12:29:27 · 956 阅读 · 0 评论 -
网络请求工具类之OkHttp3封装(二)下(支持请求取消、异步请求的线程切换)
紧接着上篇说的任务2:异步请求采用UI线程回调方式。首先采用Handler进行线程间的通信,顺便优化下回调方法,加入HttpInfo以做到工具类使用的渗透性。在OkHttpUtil中声明一个自定义的异步回调接口,该接口对网络请求接口进行了封装,使同步、异步请求处理流程保持一致性,代码如下:/** * 异步请求回调接口 */ public interface原创 2016-06-24 15:32:30 · 4265 阅读 · 0 评论 -
网络请求工具类之OkHttp3封装(二)上(支持请求取消、异步请求的线程切换)
上一篇封装的已经满足一些网络请求的基本场景,但没有将网络请求与Activity/Fragment的生命周期进行绑定,导致切换页面时没有及时释放网络请求的相关资源;其次OkHttp3的异步请求结束后的回调方法是在子线程中,若要进行UI操作就得采用 runOnUiThread 方法进一步包裹,程序显的很笨拙,总之用起来不是很爽,那这一篇就对上面两个方面来进行优化。优化任务:1、网络请求与A原创 2016-06-24 15:05:00 · 7961 阅读 · 1 评论 -
Android之解决全屏切换非全屏的页面压缩问题
Android从全屏页面(A)跳转到非全屏页面(B)会发现非全屏页面(B)的页面会闪动一下。这里的闪动高度是状态栏的高度,也就是B页面显示状态栏时页面的显示布局会向下拉伸状态栏的高度。从这可以看出底层的布局应该是采用相对布局实现的。通常解决该问题的方法是在A页面结束前/后,设置非全屏,比如在A页面的UI线程中添加以下代码:WindowManager.LayoutParams attr =原创 2016-07-11 16:14:06 · 3920 阅读 · 4 评论 -
发布Android Library项目到JCenter的便捷方法
发布Library项目到Jcenter的方法很多,但是特别赏识该作者的方法,配置简单,逻辑清晰明了,理解起来也比较容易,并配有操作过程中常见的错误。亲测了一下,5分钟左右就能搞定,借此Mark并推荐下:http://www.jianshu.com/p/0e7b8e14f0cd/comments/1050253原创 2016-07-01 15:27:43 · 309 阅读 · 0 评论