Android疑难功能
丶Veer
Android 爱好者。GitHub地址:https://github.com/fuweiwei
展开
-
ThreadPoolExecutor参数图解
为什么使用ThreadPoolExecutor在android开发中经常会使用多线程异步来处理相关任务,而如果用传统的newThread来创建一个子线程进行处理,会造成一些严重的问题:1:在任务众多的情况下,系统要为每一个任务创建一个线程,而任务执行完毕后会销毁每一个线程,所以会造成线程频繁地创建与销毁。2:多个线程频繁地创建会占用大量的资源,并且在资源竞争的时候就容易出现问题,同时这么多的线程缺乏一个统一的管理,容易造成界面的卡顿。3:多个线程频繁地销毁,会频繁地调用GC机制,...原创 2020-06-30 15:15:57 · 1505 阅读 · 2 评论 -
Android 进程保活招式大全
目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题。本文对 Android 进程拉活进行一个总结。Android 进程拉活包括两个层面:A. 提供进程优先级,降低进程被杀死的概率B. 在进程被杀死后,进行拉活本文下面就从这两个方面做一下总结。1. 进程的优先级Android 系统将尽量长时间地保持应用进程,但为了新建进程或转载 2016-10-21 16:41:59 · 438 阅读 · 0 评论 -
Android自动化打包部署及配置文档
一、需求说明:因诸多因素影响以及条件的限制,当前我们APP的Android端的打包过是手动通过开发工具打包的;这样产生的问题是: 一、Android端的APK的产出得依赖开发人员,如果开发人员不在公司或者电脑旁,测试等部门的同事要打包测试,那么测试部门就没得相对应的包用; 二、因为是手动打出来的包,对Android端的开发人员的专业技能、开发经验、对我们的项原创 2016-10-20 13:31:19 · 3218 阅读 · 0 评论 -
Android 编程下 Touch 事件的分发和消费机制
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够响应这些方法的控件包括:ViewGroup 及其子类、Activity。方法与控件的对应关系如下表所示:Tou转载 2016-08-23 15:31:01 · 376 阅读 · 0 评论 -
Android APP终极瘦身指南
指南条例第1条:使用一套资源这是最基本的一条规则,但非常重要。对于绝大对数APP来说,只需要取一套设计图就足够了。鉴于现在分辨率的趋势,建议取720p的资源,放到xhdpi目录。相对于多套资源,只使用720P的一套资源,在视觉上差别不大,很多大公司的产品也是如此,但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量了。注意,这里不是说把不是xhdpi的目录都删除,而是强转载 2016-12-02 16:22:59 · 420 阅读 · 0 评论 -
Android App 沉浸式状态栏解决方案
伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material design 设计原则,不再是以前拿着iOS设计稿,做着Android开发。本文就其中的沉浸式状态栏这一特性,描述其兼容到4.4的实现,以及一些使用中的小细节。前言在4.4之前状态栏转载 2017-02-06 13:39:47 · 1003 阅读 · 0 评论 -
Android 消息处理机制(Looper、Handler、MessageQueue,Message)
Android 消息处理机制估计都被写烂了,但是依然还是要写一下,因为Android应用程序是通过消息来驱动的,Android某种意义上也可以说成是一个以消息驱动的系统,UI、事件、生命周期都和消息处理机制息息相关,并且消息处理机制在整个Android知识体系中也是尤其重要,在太多的源码分析的文章讲得比较繁琐,很多人对整个消息处理机制依然是懵懵懂懂,这篇文章通过一些问答的模式结合Android主线转载 2017-02-07 16:24:29 · 387 阅读 · 0 评论 -
通用Android应用架构:从建项目开始
1.项目结构现在的MVP模式越来越流行。就默认采用了。如果项目比较小的话:app——Application Activity Fragment Presenter等的顶级父类config——API,常量表等model——数据层entities——数据模型presenter——MVP的P转载 2017-02-08 17:20:40 · 447 阅读 · 0 评论 -
Android:Activity 与 Fragment 通信 (99%) 完美解决方案
前言最近一直在想着能否有一种更好的方案来解决:Android中Activity与Fragment之间通信的问题,什么叫更好呢,就是能让Fragment的复用性高,性能还有好(不用反射),代码还要好维护,不需要为每对Activity和Fragment之间定义接口而发愁。先简单说下Javascript这门语言吧,或许有人就会问:咱们不是聊Android的java问题吗?怎么话题转到Ja转载 2017-02-16 11:26:37 · 2401 阅读 · 0 评论 -
AndroidStudio创建gitignore忽略已经track的文件
1. 问题原本在新建工程时AS会自动生成.gitignore文件,忽略掉不需要进行track的文件,比如.idea文件夹、build文件夹等,但是我在一开始创建项目的时候没有意识到要忽略文件,把所有文件都track了,此时如果只添加.gitignore就不会生效。 即gitignore只对未track的文件生效,对已经track的文件不生效。对于已经track的文件,直接添加gitig转载 2017-07-19 17:41:46 · 1053 阅读 · 0 评论 -
Android主流框架RxJava+Retrofit+MVP
简介最近公司新创立一个项目,准备开始前期工作,搭建框架,正在想着要怎么搭建更好的框架,以便轻松应付后续需求。想着最近比较流行的RxJava+Retrofit+MVP框架,自己也准备写一个通用的前端项目框架,撸起袖子准备开干。RxJavaRxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based pr...原创 2018-07-05 13:51:02 · 5078 阅读 · 8 评论 -
控制台Json日志解析处理
在开发中我们经常要在控制台中打印日志,来实时定位追踪问题,但是一般json数据不进行处理的话,都是扎堆在一起,很难一眼找到想要的数据,例如:当数据量一多的时候,简直是灾难,只能把数据copy出来,用解析工具来查看,那有没有什么方法能直接在控制台看到解析好的数据,增加开发效率,那么就需要我们最原始数据进行处理了。/** * json数据处理解析 * Created by Veer * date...原创 2018-07-06 14:12:26 · 1568 阅读 · 1 评论 -
Android跨进程通信Binder、Messenger、AIDL汇总
前言提到的进程间通信(IPC:Inter-Process Communication),在Android系统中,一个进程是不能直接访问另一个进程的内存的,需要提供一些机制在不同的进程之间进行通信,Android官方推出了AIDL(Android Interface Definition Language),它是基于Binder机制的,具体Binder机制的东西就很多了,网上很多资料,我们就不...原创 2018-08-28 16:27:40 · 1100 阅读 · 0 评论 -
Android获取设备唯一标识解决方案
关于Android设备唯一标识符号前言由于在开发中需要开发游客模式,在用户没有登录的情况下必须确保设备的唯一性,于是惯性思维想到的肯定是使用DevicesId 来作为设备的唯一标识,用以代替用户登录以后的唯一标识符。但是由于国内复杂的rom定制情况,以及用户权限禁止的情况。DevicesId 在使用中并不能百分百的货到到。所以本篇文章就是描述一下,我在开发中如何处理设备唯一标识符的。...转载 2018-10-18 10:16:28 · 2501 阅读 · 1 评论 -
Android图片缓存策略
前言在Android开发中,如果图片过多,而我们又没有对图片进行有效的缓存,就很容易导致OOM(Out Of Memory)错误。因此,图片的缓存是非常重要的,尤其是对图片非常多的应用。现在很多框架都做了很好的图片缓存处理。一直想写一个自己的图片缓存框架,之前一直用Glide、Fresco等一些主流的图片框架。这些框架对处理的处理都做的非常好,也查阅了这些框架的一些源码,整体思路是使用三级...原创 2018-12-11 15:35:09 · 2196 阅读 · 0 评论 -
Android 命名规范
刚接触Android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间。如果就是我一个人开发,一个人维护的话还好,可是如果一个项目是团队分工合作,这样让你的同事去看你的代码就更加吃力了,因为大家之间的编程方式不一样,所以,在开发过程中,命名规范统一尤为重要,最好是团队中统一好大家命名方法转载 2016-08-24 18:09:02 · 314 阅读 · 0 评论 -
ReactNative安卓首屏白屏优化
前言公司现有app中部分模块使用reactnative开发,之前使用的都是webview来加载H5页面,在实施的过程中,reactnative良好的兼容性,极佳的加载、动画性能,提升了我们的开发、测试效率,提升了用户体验。但是,在android中,当点击某个rn模块的入口按钮,弹出rn的activity到rn的页面展现出来的过程中,会有很明显的白屏现象,不同的机型不同(cpu好的白屏时间短原创 2016-06-20 16:23:37 · 2451 阅读 · 0 评论 -
Android 使用模板生成Word文档,支持手机直接查看word
最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,抱怨归抱怨,但是面对需求只能硬着头皮做了,经过各种拷问度娘和谷哥,终于找了一个比较好用的方法。特此跟他家分享。 Apache 公司推出的 Apache POI,我们来看下他的原创 2015-11-28 17:00:06 · 15280 阅读 · 34 评论 -
最全的android图片加密
在android开发过程中有些时候一些重要的图片,我们不希望用户通过文件管理直接能查看,我们该怎么办呢,当然你可以把图片放在android的内部存储中,data/data/下,但毕竟android root用户一大堆,还是解决不了问题。那么我们就需要对图片进行加密,当然加密的方法有很多种,下面给大家推荐我常用的2中方法,基本上可以解决大部分问题。 1、国际标准的AES加密,通过加密流存储原创 2015-12-02 14:53:41 · 11503 阅读 · 0 评论 -
android项目Tab标签页面大汇总(Fragment、Fragment+ViewPage、TabLayout)
在大部分android项目中这种界面:是越来越多了,很多主流的app都采用了这种Tab方式,这种方式有很多优点,在一个页面可以尽量多的内容,结构也比较清晰。那么作为程序猿的我们当然不能放过任何好的想法和方法。这种类型的页面大部分是依托Fragment实现的,今天正好总结下。目前常用的Tab类型页面有3中方式:1、单纯的使用FragmentManger+Fragment实现2、使用ViewPager原创 2015-12-19 16:02:22 · 2470 阅读 · 2 评论 -
Android 事件分发机制总结
前言android事件分发机制是一个非常重要但是比较难理解的知识点,大部分自定义控件等功能都用到了事件分发机制,搞懂这方面的知识还是很有必要的,所有一直想总结一下android事件分发机制的原理,一来方便自己以后查看,二来加深自己的印象。网上这方面资料也比较多,我也参考了一下大神的文章,自己总结一下。分析什么是事件分发?我们在操作手机屏幕的时候,每一个点击、移动动作都看做是一个事件原创 2016-01-21 09:17:00 · 1152 阅读 · 0 评论 -
Android Binder机制浅析
摘要Binder是android中一个很重要且很复杂的概念,它在系统的整体运作中发挥着极其重要的作用,不过本文并不打算从深层次分析Binder机制,有两点原因:1是目前网上已经有2篇很好的文章了,2是对Binder机制进行深入底层乃至驱动的分析这一过程相当困难且相当耗时,因此并不适合重复造轮子。本文的角度是对Android的Binder机制从整体和概念上进行分析,能够让大家很快明白到底什么是B转载 2016-01-25 17:53:19 · 453 阅读 · 0 评论 -
Android 仿今日头条频道管理(上)(GridView之间Item的移动和拖拽)
前言经常逛今日头条、发现它的频道管理功能做的特别赞,交互体验非常好、如图:它是2个gridview组成、2个gridview之间的Item是可以相互更换的、而且我的频道的Item是可以拖拽进行排序。仔细观察、今日头条有些细节做的的非常好,当一个gridview1的item移动到另一个gridview2时、gridview1的item不会立即消失、而是有一个没有内容的背景框、等ite原创 2016-01-08 15:30:42 · 8311 阅读 · 5 评论 -
Android 仿今日头条频道管理(下)(GridView之间Item的移动和拖拽)
前言上篇博客我们说到了今日头条频道管理的操作交互体验,我也介绍了2个GridView之间Item的相互移动,详情请参考:Android 仿今日头条频道管理(上)(GridView之间Item的移动和拖拽)今天把相对比较复杂的gridView的拖拽也记录下,在开始之前我们事先要了解下Android的事件分发机制,网上这方面的资料也比较多。因为自定义控件大部分要用到事件分发机制的知识。实现原创 2016-01-09 16:07:22 · 6269 阅读 · 7 评论 -
Android 内存溢出大总结
前言最近遇到了Android 内存溢出的问题,自己也研究了许久,想必这是大部分Android开发者所遇到的问题,参考了一些大神的博客,自己想把这一块的知识做个大总结,加深一下自己的理解,顺便做一个记录,方便自己以后查看。Android 内存的意义 其实我们在用安卓手机的时候不用太在意剩余内存,android上的应用是java,当然需要虚拟机,而android上的应原创 2016-02-01 15:24:22 · 2286 阅读 · 0 评论 -
Android 文件缓存方法
前言我们经常遇到从网络获取图片,为了使图片查看流畅,我们肯定要使用缓存,大部分我们会使用内存缓存,但是android内存缓存毕竟是有限的,这样的话,我们必须使用文件来缓存部分图片。思路当我们把一张图片从网络下载成功以后,这个图片会被加入内存缓存和文件缓存,内存缓存来说请参考Android内存溢出大总结,对于文件缓存来说,这张图片将被以url的哈希值加cach后缀名的形式存储在S原创 2016-02-01 17:48:35 · 1800 阅读 · 0 评论 -
Android Service大总结
前言Service一个老生常谈的话题,面试中面试官也经常面试到,说明是一个非常重要的知识点。之前了解的很透彻的、可是过一段时间就忘了、所以一直想写一篇博客记录总结下。一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了。Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运原创 2016-03-08 17:08:14 · 1452 阅读 · 1 评论 -
Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
一、Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。 那么转载 2016-03-20 16:54:00 · 735 阅读 · 0 评论 -
彻底明白Android中AIDL及其使用
1、为什么要有AIDL?无论学什么东西,最先得弄明白为什么要有这个东西,不要说存在即是合理,存在肯定合理,但是你还是没有明白。对于AIDL有一些人的浅显概念就是,AIDL可以跨进程访问其他应用程序,和其他应用程序通讯,那我告诉你,很多技术都可以访问,如广播(应用A在AndroidManifest.xml中注册指定Action的广播)应用B发送指定Action的广播,A就能收到信息,这样也能看成转载 2016-02-25 16:40:18 · 2129 阅读 · 0 评论 -
Android studio gradle构建工程的时候很慢经常报错解决方案
我们在使用Android studio开发项目中,随着开发的进行,工程会越来越大,经常会遇到这样的问题报错:Error:Execution failed for task ':Hairy:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: com.android.ide.原创 2016-06-30 14:51:49 · 1269 阅读 · 0 评论 -
线程池----ThreadPoolExecutor机制
ThreadPoolExecutor机制 一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。 3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障转载 2016-07-05 15:34:50 · 1003 阅读 · 0 评论 -
android 创建多层树型结构
在项目开发过程中、遇到一个可能大家都经常会遇到的问题:在一个页面中要显示一个树型结构图,例如组织结构、文件系统等等。一开始是第一层、下面是第二层、第三层....例如:这样的结构图、想必肯定很常见,最近学习了一种比较好的方法,记录以及分享。功能分析一看这个结构,其实就是一个listview,只是在特定情况下显示部分层次的内容以及不显示其它层次内容,既然我们要实现树形结构、那么父层原创 2015-12-29 15:33:22 · 3152 阅读 · 1 评论