Android开发( 右侧选择分类 )
android01

Android源码解析(七)-- Android之LruCache

android开发过程中经常会用到缓存,现在主流的app中图片等资源的缓存策略一般是分两级,一个是内存级别的缓存,一个是磁盘级别的缓存。作为android系统的维护者google也开源了其缓存方案,LruCache和DiskLruCache。从android3.1开始LruCache已经作为android源码的一部分维护在android系统中,为了兼容以前的版本android的support-v4
1945 人浏览
android01

Android源码解析(六)-- Android之Log日志

首先说点题外话,对于想学android framework源码的同学,其实可以在github中fork一份,具体地址:platform_frameworks_base这里面基本都是android framework层的源码了。而且最近发现了一个比较不错的github插件:OctoTree,它 是一个浏览器插件,它可以让你在Github 看代码时,左边栏会出现一个树状结构,就像我们在IDE 一样。当
2367 人浏览
android01

Android源码解析之(五)-- Android之IntentService

什么是IntentService?简单来说IntentService就是一个含有自身消息循环的Service,首先它是一个service,所以service相关具有的特性他都有,同时他还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线程中,废话不多说,我们来看其简单的使用方法:定义一个IntentS
1980 人浏览
android01

Android源码解析之(四)-- Android之HandlerThread

HandlerThread是个什么东西?查看类的定义时有这样一段话:Handyclassforstartinganewthreadthathasalooper.Theloopercanthenbeusedtocreatehandlerclasses.Notethatstart()muststillbecalled.意思就是说:这个类的作用是创建一个包含looper的线程。那么我们在什么时候需要用到
2619 人浏览
android01

Android源码解析之(二)-- Android异步消息机制

知乎上看了一篇非常不错的博文:有没有必要阅读ANDROID源码痛定思过,为了更好的深入android体系,决定学习android framework层源码,就从最简单的android异步消息机制开始吧。(一)Handler的常规使用方式publicclassMainActivityextendsAppCompatActivity{ publicstaticfinalStringTAG=Mai
2029 人浏览
android01

Android源码解析之(一)-- Android项目构建过程

平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run 'app'就可以在build/outputs/apk生成可以在android设备中安装的apk文件了,那么整个android源码的构建过程是怎么样的呢?我们可以根据Google官方提供的流程图来具体了解构建的过程:通常的构建过程就是如上图所示,下面是具体描述:1.AAPT(Androi
2040 人浏览
android01

Android产品研发(二十五)-- MVC、MVP、MVVM开发模式

本文我们将讲解Android开发中常常涉及到的MVC/MVP/MVVM等模式的基本概念。许多童鞋对Android开发中涉及到的MVC、MVP、MVVM这三种模式不是太清楚,我认为无论是MVC、MVP亦或者是MVVM都是一种代码组织方式,通过这种代码组织方式能够让代码更有层次感,各个层次主要负责各自的工作,这样降低了整个项目的代码逻辑耦合度与可读性。下面对MVC、MVP、MVVM等设计模式逐一的做一
2628 人浏览
android01

Android产品研发(二十四)-- 内存泄漏场景与检测

本文我们将讲解一下关于Android开发过程中常见的内存泄露场景与检测方案。Android系统为每个应用程序分配的内存是有限的,当一个应用中产生的内存泄漏的情况比较多时,这就会导致应用所需要的内存超过这个系统分配的内存限额,进而造成了内存溢出而导致应用崩溃。在实际的开发过程中我们由于对程序代码的不当操作随时都有可能造成内存泄露。(1)什么是内存泄露当一个对象已经不需要再使用了,本该被回收时,而有另
2865 人浏览
android01

Android产品研发(二十三)-- Android 中保持静态密钥实战

上一篇文章中我们讲解了android中的实用调试技巧。讲解了android中的原生Log API以及其使用方式,讲解了自定义日志API、使用方式和实现原理,讲解了通过gradle配置日志框架在正式环境中屏蔽日志信息等。最后我们还重点讲解了android studio中的断点调试技巧,主要包括:断点调试功能、日志断点、求值调试、异常断点、方法断点等。更多关于android中实用调试技巧的知识,可以参
2943 人浏览
android01

Android产品研发(二十二)-- Android 使用调试技巧

上一篇文章中我们讲解了android UI优化方面的知识。我们讲解了android中的include、marge、ViewStub标签,在使用这些标签时可以简化我们的布局文件,优化组件绘制流程;讲解了android中的过度绘制相关知识点,通过优化我们的App过度绘制可以提高App的UI绘制流程与性能;我们还讲解了App中一些UI优化的小tips。更多关于android UI优化方面的知识可以参考我
2923 人浏览
android01

Android产品研发(二十一)-- Android中的UI优化

上一篇文章中我们讲解了android产品研发过程中的代码Review。通过代码Review能够提高产品质量,增强团队成员之间的沟通,提高开发效率,所以良好的产品开发迭代过程中,代码Review是一个必不可少的步骤。那么如何进行代码Review呢?我们主要讲解了团队成员之间的代码Review,代码lint检查,开发规范等方面的知识点,更多关于代码Review相关的知识可参考我的:android产品研
2816 人浏览
android01

Android产品研发(二十)-- 代码Review

上一篇文章中我们讲解了如何在android studio中进行单元测试。实际开发过程中有一些功能性的需求,比如测试工具类,测试数据存储等测试工作,如果还是通过重复执行apk文件的编译,安装,运行等会浪费大量的时间,而这些功能与android的开发环境无太大的关系,我们完全可以使用单元测试来执行。android studio中默认是支持进行单元测试的,并提供了获取Context等系统对象的API,我
3204 人浏览
android01

Android产品研发(十九)-- Android Studio 单元测试

上一篇文章中我们讲解了webview中问题集锦,讲解了webview的性能优化,讲解了webview种入Cookie信息,讲解了activity退出的时候清除webview信息报错,讲解了如何通过java代码和js代码相互交互,讲解了webview如何下载文件以及腾讯的X5浏览服务等知识,这些都是我在使用webview中遇到的问题,难点,实践等,更多关于这些问题的说明,可以参考我的:android
2967 人浏览
android01

Android产品研发(十八)-- WebView问题集锦

上一篇文章中我们介绍了hybrid开发相关的知识。重点介绍了hybrid开发的概念,hybrid开发的作用,android中如何实现hybrid开发,android中实现hybrid开发的例子,以及产品开发中hybrid开发实践等,通过对以上这些概念的介绍我们对hybrid开发应该已经有了大概的了解,更多具体的内容可参考我的:android产品研发(十七)-->Hybrid开发本文中我们将介
3167 人浏览
android01

Android产品研发(十七)-- Hybrid开发

上一篇文章中我们介绍了android开发中经常会涉及到但又常常被忽视掉的开发者模式。主要讲解了包括如何打开手机的开发者模式,开发者模式中各个菜单的意义和作用,如何清除手机App数据,以及清除手机App数据具体清除那些数据等知识点,具体关于android中开发者模式的知识,可参考我的: android产品研发(十六)-->开发者选项本文将介绍android中hybird开发相关的知识点。hyb
3039 人浏览
android01

Android产品研发(十六)-- 开发者选项

上一篇文章中我们讲解了android中内存对象的序列化方式。由于android开发涉及到不同Activity的数据传递,对于基本数据类型数据的传递是没有问题的,但是一旦涉及到复杂数据类型,就需要将数据序列化以便传输,在文章中我们主要讲解了两种数据序列化的方式:实现Serializable接口和实现Parcelable接口,同时也比较了它们各自的优缺点和实现方式。具体关于内存对象序列化方面的知识可参
3458 人浏览
android01

Android产品研发(十五)-- 内存对象序列化

上一篇文章中我们讲解了android app中的升级更新操作,app的升级更新操作算是App的标配了,升级操作就是获取App的升级信息,更新操作是下载,安装,更新app,其中我们既可以使用app store获取应用的升级信息,也可以在应用内通过请求本地服务器获取应用的升级信息,并通过与本地app的版本号对比判断应用是否需要升级。升级信息是app更新的基础,只有我们的app的升级信息指明需要更新,我
3022 人浏览
android01

Android产品研发(十四)-- App升级与更新

上一篇文章中我们讲解了android app中的轮训操作,讲解的内容主要包括:我们在App中使用轮训操作的情景,作用以及实现方式等。一般而言我们使用轮训操作都是通过定时任务的形式请求服务器并更新用户界面,轮训操作都有一定的使用生命周期,即在一定的页面中启动轮操作,然后在特定的情况下关闭轮训操作,这点需要我们尤为注意,我们还介绍了使用Timer和Handler实现轮训操作的实例,更多关于App中轮训
3298 人浏览
android01

Android产品研发(十三)-- App轮训操作

上一篇文章中我们讲解了android app实现长连接的几种方式,各自的优缺点以及具体的实现,一般而言使用第三方的推送服务已经可以满足了基本的业务需求,当然了若是对技术有追求的可以通过NIO或者是MINA实现自身的长连接服务,但是自己实现的长连接服务一来比较复杂耗时比较多,而且可能过程中有许多坑要填,一般而言推荐使用第三方的推送服务,稳定简单,具体管理长连接部分的模块可参考:android产品研发
3199 人浏览
android01

Android产品研发(十二)-- App长链接实现

上一篇文章中我们讲解了android应用内页面跳转协议-scheme协议,通过该协议我们可以跳转至指定的Activity,并在该Activity中解析scheme用于跳转到指定的页面,我们可以利用scheme协议实现应用内页面跳转、H5页面与Native页面相互跳转、通知栏消息跳转相应页面等,具体可参考: android产品研发(十一)-->使用scheme实现页面跳转。而本文中我们将讲解一
2941 人浏览