201611-03 Android安全问题-网络传输 前言Android开源,开源就意味着无线可能和无线的不安全。现在(2016)市面上的所有Android安全方法基本上有以下几种:1.代码混淆。2.so处理重要逻辑。3.加壳这些都是在客户端做的处理,然而,如果破解客户端能获取的利益大于破解的难度,那么基于开源的Android基本还是会被"破解大军"进行"三光政策"的。既然都会被破解,那还做这些做什么呢?这就是我之前文章说的,利益和难度的取舍。当我们做了以上3部后,就已经阻绝绝大部... 继续阅读 >
201610-24 Android Studio插件 1.介绍在使用AndroidStudio开发的时候,大部分人都会使用一些插件来提高开发效率,比如:ButterKnife自动生成注解代码PermissionsDispatcher更方便的进行Android6.0权限处理像这样的插件还有很多很多,但我们不能一直停留在用的程度,这样太不符合程序猿的风格了,今天就让我们自己动手来写一个插件,当以后自己有好的想法的时候,也能写一个出色的插件给大家使用。想到以前写系统原生dialog的时候还要... 继续阅读 >
201610-18 Android中的缓存 为什么会用到缓存呢?主要是流量耗不起啊,国内的公共场所的WiFi的普及率不高,因此必须考虑流量的问题,说白了,就是用户体验啊,每次都网络请求,消耗资源不说,网速不好的情况下还会有网络延时,用户体验不好。Android中的缓存,从方式上来说,一般有网络缓存,磁盘缓存即SD卡缓存,内存缓存。网络缓存需要服务端的配合,用于加快网络请求的响应速度。磁盘缓存一般用DiskLruCache,当然也可以用SqlLite数据库,以及sharedpref... 继续阅读 >
201610-17 App启动优化-Android性能优化 通常用户期望app响应和加载速度越快越好。一个启动速度慢的app很可能会给用户留下不好的印象,除了导致用户在应用市场上的打分低之外,很有可能导致致用户直接卸载。这篇文章提供了优化app启动时间的方法。先解释了app进程启动的内部流程。然后讨论如何优化启动的性能。最后列出几个常见的启动问题和解决方案。一启动内幕App启动可能发生在以下三种状态之一,每一种都会影响到展现给用户的时间:冷启动、热启动和温启动(翻... 继续阅读 >
201610-12 关于 Android WebView 的内存泄露问题 在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用webview.destroy();webview=null;对内存占回收用还是没有任何效果。有人说,一旦在你的xml布局中引用了webview甚至没有使用过,都会阻碍重新进入Application之后对内存的gc。包括使用MapView有时一会引发OOM,几经周折在网上看到各种解决办法,在这... 继续阅读 >
201610-11 Android开发套路收集整理与讨论 以下做法纯属个人习惯,欢迎讨论:DinitView()与updateView()通常,我会添加一个initView()方法来初始化所有的View对象,在这个方法的具体实现中,可能会有两种不同的细微差别。第一种是仅仅做findViewById()就好了,也就是仅仅是去找到每一个View对象,而不去给它们设置属性,比如setText()之类的。另一种则是在findViewById()后,顺便给它们设置初始值。我更倾向于第一种做法,因为如果你在initView()方法中给View设置一些属... 继续阅读 >
201610-07 Android Studio 小技巧汇总 常用技巧1.书签(Bookmarks)描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处。调用:Menu→Navigate→Bookmarks快捷键:添加/移除书签:F3(OSX)、F11(Windows/Linux);添加/移除书签(带标记):Alt+F3(OSX)、Ctrl+F11(Windows/Linux);显示全部书签:Cmd+F3(OSX)、Shift+F11(Windows/Linux),显示所有的书签列表,并且是可以搜索的... 继续阅读 >
201610-06 Android Studio常用插件 不得不承认,AndroidStudio越用越爽。其代码提示和搜索功能相当强大,非常智能。颜色、图片在布局和代码中可以实时预览。 开发的过程中使用一些插件可以事半功倍,下面介绍一些博主开发过程中常用到的一些as插件供大家参考。ButterKnife官网:http://jakewharton.github.io/butterknife/ github:https://github.com/JakeWharton/butterknife该插件是由jakewharton开发的,他被人称为android明星程序员,伟大的Nine... 继续阅读 >
201609-26 一个Android项目搞定所有主流架构 为什么选择MVP?相信大部分人都听过这个框架,或者已经使用过。了解和简单运用的过程中大家一定会有这样几个问题或者痛点:MVP有什么好处,为什么要用它?MVP结构代码怎么写?为什么MVP结构利于单元测试?而且我为什么要写测试代码呢?好了你说服我了,但是我不会写单元测试啊!MVP多了好多类,还要写测试代码,写起来好累啊!老娘不想这么麻烦啊!这里班门弄斧的分享下我的经验... 继续阅读 >
201609-20 Android开发必须把握的七大开源项目 1,LoginButtons编写各类展示效果,项目代码量比较少,也很适合新手学习。2,MaterialAnimations演示View的平移、缩放动画,activity进入和退出动画,界面间元素共享,并且开发者在README中,对动画原理进行了精讲,是学习动画很好的项目,项目代码量比较少,也很适合新手学习。3,Meizhi每天推送一张妹子图、一个小视频和一系列程序员精选文章,数据来源于代码家的干货集中营。唯一不足就是视频解析还有bug,声音视频无... 继续阅读 >
201609-07 Android自定义控件常用方法总结 inflateinflate方法常常用来解析一个xml布局文件,在自定义组合式控件中常常使用,使用的姿势包括:View.inflate(context,resource,root)LayoutInflater.from(getContext()).inflate(resource,root);而View.inflate其实还是调用的LayoutInflater去解析一个xml:publicstaticViewinflate(Contextcontext,intresource,ViewGrouproot){LayoutInflaterfactory=LayoutInflater.from(context);returnf... 继续阅读 >
201608-25 Android的线程和线程池 (1)在Java中默认情况下一个进程只有一个线程,也就是主线程,其他线程都是子线程,也叫工作线程。Android中的主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。线程的创建和销毁的开销较大,所以如果一个进程要频繁地创建和销毁线程的话,都会采用线程池的方式。(2)在Android中除了Thread,还有HandlerThread、AsyncTask以及IntentService等也都扮演着线程的角色,只是它们具有不同的特性和使用场景。AsyncTa... 继续阅读 >
201608-12 Android 开发中不可不知的小技巧 这里收集了大家常用的一些Android代码,持续更新中,内容来自自己的平时积累和网络上看到的文章,部分原文地址在最下方。如有错误欢迎指正,如有侵权,请联系我删除。里面可能会有重复内容,请忽略或者提醒我删除。setBackgroundResource(0)可以移除View的背景色Resources.getSystem().getDisplayMetrics().density可以不用Context也能获取屏幕密度哦通过重载ViewGroup的dispatchDraw... 继续阅读 >
201608-03 Android 多线程编程的总结 前言这几天在研究Android的多线程方面的知识,阅读了许多大牛的文章,发现Android的多线程方式挺多的,关于各种方式的优缺点也都各有看法,所以这部分的知识还是很容易令人觉得混乱的,所以自己梳理了相关知识,用自己的角度去简单总结这些知识,巩固自己知识的同时也希望帮助到其他人。首先,从两个问题入手:我们为什么需要多线程机制?什么时候需要到多线程?答:1、因为Android官方明确声明在多线程编程时有两大原则:第一、... 继续阅读 >
201607-30 Android组件化和插件化开发 什么是组件化和插件化?组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。插件化开发和组件化开发略有不用,插件化开发时将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk(组件化的每个模块是个lib),最终打包的时候将宿主apk和插... 继续阅读 >
201607-30 汇总Android Manifest 权限描述大全 权限名称描述android.permission.ACCESS_CHECKIN_PROPERTIES访问登记属性读取或写入登记check-in数据库属性表的权限android.permission.ACCESS_COARSE_LOCATION获取错略位置通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米android.permi... 继续阅读 >