这个系列的文章一共8篇,我酝酿了很多年,参考了很多资源,查看了很多源码,直到今天把它写出来,也是战战兢兢,生怕什么地方写错了,贻笑大方. (一)引言 早在我还是Android菜鸟的时候,有很多技术我都不太明白,也都找不到答案,比如apk是怎么安装的,比如资源是怎么加载的. 再比如说,每本书都会讲AIDL,但我却从来没用过.四大组件也是这个问题,我只用过Activity,其它三个组件,不但没用过,甚至连它们是做什么的,都不是很清楚. 之所以这样,是因为我一直从事的是电商类App开发工作,对于这类A…
(五)AMS 如果站在四大组件的角度来看,AMS就是Binder中的Server. AMS全称是ActivityManagerService,看字面意思是管理Activity的,但其实四大组件都归它管.估计是Android底层开发人员先写了ActivityManagerService用来管理Activity,后来写Service.Receiver.CP的时候发现代码都差不多,于是就全都用ActivityManagerService,但是却忘记改名字了——我也是猜的,纯属八卦. 由此而说到了插件化…
(十一)BroadcastReceiver BroadcastReceiver,也就是广播,简称Receiver. 很多App开发人员表示,从来没用过Receiver.其实吧,对于音乐播放类App,用Service和Receiver还是蛮多的,如果你用过QQ音乐,App退到后台,音乐照样播放不会停止,这就是你写的Service在后台起作用. 在前台的Activity,点击停止按钮,就会给后台Service发送一个Receiver,通知它停止播放音乐:点击播放按钮,仍然是发送这个Receiver,…
(七)App启动流程第2篇 书接上文,App启动一共有七个阶段,上篇文章篇幅所限,我们只看了第一阶段,接下来讲剩余的六个阶段,仍然是拿斗鱼App举例子. 简单回顾一下第一阶段的流程,就是Launcher向AMS发送一个跨进程通信,通过AMN/AMP,告诉AMS,我要启动斗鱼App. 画一个图,描述一下启动App所经历的7个阶段: 第2阶段 AMS处理Launcher传过来的信息 这个阶段主要是Binder的Server端在做事情.因为我们是没有机会修改Binder的Server端逻辑的,所以这个…
(十)Service Service有两套流程,一套是启动流程,另一套是绑定流程.我们做App开发的同学都应该知道. 1)在新进程启动Service 我们先看Service启动过程,假设要启动的Service是在一个新的进程中,分为5个阶段: 1)App向AMS发送一个启动Service的消息. 2)AMS检查启动Service的进程是否存在,如果不存在,先把Service信息存下来,然后创建一个新的进程. 3)新进程启动后,通知AMS说我可以啦. 4)AMS把刚才保存的Service信息发送给…
(十二)ContentProvider (1)ContentProvider是什么? ContentProvider,简称CP. 做App开发的同学,尤其是电商类App,对CP并不熟悉,对这个概念的最大程度的了解,也仅仅是建立在书本上,它是Android四大组件中的一个. 做系统管理类的App,比如说手机助手这种,有机会频繁使用CP. 而对于应用类App,数据通常存在服务器端,其它应用类App也想使用的时候,一般都是从服务器取数据,所以没机会使用到CP. 有时候我们会在自己的App中读取通信录或…
(十)PMS及App安装过程 PMS,全称PackageManagerService,是用来获取Apk包的信息的. 在前面分析四大组件与AMS通信的时候,我们介绍过,AMS总是会使用PMS加载包的信息,将其封装在LoadedApk这个类对象中,然后我们就可以从中取出在manifest声明的四大组件信息了. (一) 在下载并安装App的过程,会把Apk存放在data/app目录下. Apk是一个zip压缩包,在文件头会记录压缩包的大小,所以后续在文件尾巴就算是追加一部小电影,也不会对解压造成影响—…
(八)App内部的页面跳转 在介绍完App的启动流程后,我们发现,其实就是启动一个App的首页. 接下来我们看App内部页面的跳转. 从ActivityA跳转到ActivityB,其实可以把ActivityA看作是Launcher,那么这个跳转过程,和App的启动过程就很像了. 有了前面的分析基础,会发现,这个过程不需要重新启动一个新的进程,所以可以省略App启动过程中的一些步骤,流程简化为: 1)ActivityA向AMS发送一个启动ActivityB的消息. 2)AMS保存ActivityB…
一看就懂的Android APP开发入门教程 作者: 字体:[增加 减小] 类型:转载   这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,需要的朋友可以参考下     工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和io…
[谋哥每天一干货,第四十篇]         为什么取这个标题呢?由于昨天一些本来"支持"谋哥的人看到谋哥搞收费VIP群,认为谋哥赚苦逼开发人员的钱非常不道德,且说谋哥我写的东西都不切实际,所有是一些思想性的东西,毫无实战意义,于是愤然离去. 华为老总任正非说:"我们须要将军,更须要战略家.思想家".有App赚钱实战经验的人都会知道,谋哥我写的文章都是基于实战,我不会告诉你详细某个 App怎么搞(除非你增加VIP群.我指导你),我仅仅会说:"你买本<…
Android  APP开发需求文档范本 软件需求文档格式的标准写法 1.引言 1.1 编写目的 • 阐明开发本软件的目的: 1.2 项目背景 • 标识待开发软件产品的名称.代码: • 列出本项目的任务提出者.项目负责人.系统分析员.系统设计员.程序设计员.程序员.资料员以及与本项目开展工作直接有关的人员和用户: • 说明该软件产品与其他有关软件产品的相互关系. 1.3 术语说明 列出本文档中所用到的专门术语的定义和英文缩写词的原文. 1.4 参考资料(可有可无) 列举编写软件需求规格说明时所参…
Android App开发中用到过的专题类开源代码: 项目的需求多了,不知不觉成了Github摘抄员,感谢分享精神,节省了很多弯路和时间.不过想要实现指定效果,还是要看懂作者的思路才好下手改造. 主题:     Gif动画 链接:     https://github.com/koral--/android-gif-drawable 简介:     在Android上讲动画的Gif像View和Drawable一样使用,使用JNI lib的方式播放Frame,比直接利用WebView或Movie类…
 前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的技术进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [原]热更新开源项目Tinker源码解析之资源热更新 [原]热更新开源项目Tinker源码解析之Library热更新 [原]Android热更新开源项目Tinker集成实践总结 [原][开源项目]DexDiff格式解析工具 异步并发 [原]JAVA并发库concurrent包之ThreadPoolEx…
 前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 [原]热更新开源项目Tinker源码解析之资源热更新 [原]热更新开源项目Tinker源码解析之Library热更新 [原]Android热更新开源项目Tinker集成实践总结 [原][开源项目]DexDiff格式解析工具 异步并发 [原]JAVA并发库concurrent包之ThreadPool…
Android NFC开发(二)--Android世界里的NFC所具备的条件以及使用方法 NFC的应用比较广泛,而且知识面也是比较广的,所以就多啰嗦了几句,我还还是得跟着官方文档:http://developer.android.com/guide/topics/connectivity/nfc/index.html来,看这篇的同学可以先大概的了解一下Android NFC开发(一)--初探NFC,了解当前前沿技术 1.Android NFC的历史 真要说起来,NFC在Android上,也是从A…
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官方文档: https://www.html5plus.org/doc/zh_cn/android.html H5端调用Android activity 并获取activity返回过来的数据: //获取当前Activity,使用H5的方式调用android原生方法,从而启动activity var m…
在学习NDK中,当我在项目的bin/classes目录下使用javah命令生成头文件时,出现了“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”这个问题,如下 跳转到项目的src目录下使用javah命令,而不是在项目的bin/classes目录下使用javah命令即可! 无法访问android.app.Activity是说明没有引入android.jar包可以看看java -h里面的具体说明.其中有一个-bootclasspath…
原文网址:http://stackoverflow.com/questions/25508735/cant-find-referenced-method-android-app-remoteinput-getremoteinputs-in-cl I am kind of stuck from past 1 week from this issue. I am trying to export my android app for final release but it gives follow…
Android音频开发(1):基础知识 导读 人的说话频率基本上为300Hz~3400Hz,但是人耳朵听觉频率基本上为20Hz~20000Hz. 对于人类的语音信号而言,实际处理一般经过以下步骤: 人嘴说话-->声电转换-->抽样(模数转换)-->量化(将数字信号用适当的数值表示)-->编码(数据压缩)--> 传输(网络或者其他方式) --> 解码(数据还原)-->反抽样(数模转换)-->电声转换-->人耳听声. 抽样率 实际中,人发出的声音信号为模拟…
需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字"Hello Android",并将应用程序的名称更改为"FirstApp". 实现步骤: 使用 Android 创建应用程序 打开目录结构中的 string.xml 文件,在文件中添加 Hello Android 和 FirstApp 的字符串 打开 AndroidManifest.xml 文件,修改应用程序的名称 打开 Activity 对应的布局文件,修改…
需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行 实现步骤: 打开 Android Studio,创建一个 Android 应用程序 设置应用程序的名称等相关信息 启动 Genymotion 模拟器 运行 Android 应用程序,查看运行结果…
译者注:不知道其他开发者是否和我一样,参与或者写了很多Web项目,但是却没有真正的去完整的部署应用,很多时候都是交给ops即运维的同学帮忙来做.而作为一个有节操的开发者,我认为了解一些服务器方面的知识是很有必要的,读了这篇文章之后,自己对nginx也有了一个初步的认识,对自己很有帮助,不敢独享,遂译之. 如果你是一名Web开发人员,那么你很有可能听过nginx(读音听起来像engine-x). Nginx是一款速度快,功能强大的http以及反向代理服务器,经过简单的配置之后即可以用来托管页面.…
前言 经过了两年多终于完成了这本书,2016年9月份开始写的,到今天为止2年零2个月,本书的内容大部分是去年完成的,看过我去年总结的读者可能知道,去年事情很多太忙了,导致本命年这本书没有上架(有点小小的遗憾). 工作之余喜欢写写技术文章,对自己的技术做一个总结同时也让后来者站在我的肩膀上,之前一直在CSDN发表文章,也是CSDN博客专家,单篇文章上万阅读量,在这里感谢这个平台,让我的文章被更多人看到. 为什么要写这本书? 现在Android方面的书也蛮多的,但是都是讲基础的书籍或者技术都过时了,…
代码编写 做好准备工作后,终于可以开始写我们的hello android了,在开始编写代码之前,我们先了解几个文件: res/layout/main.xml App主窗体布局文件,你的应用长什么样都在这边定义,有Design和Text两种模式 res/values/strings.xml 可以理解为i18n文件,这个文件用来存放程序调用的各种字符串 src/com/example/helloandroid/MyActivity.java 这个就是我们的主程序类,等下要实现的功能都在这个文件里添加…
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. AndroidAnnotations是一个能够让你快速进行Android开发的开源框架,它能让你专注于真正重要的地方.使代码更加精简,使项目更加容易维护,它的目标就是“Fast Android Development.Easy maintainance”. 说白了 就是可以少写很多代码,哈哈. Andr…
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. 思路: 1.把请求网络的方法放到一个类里面 2.创建一个接口将数据发给Activity 3.Activity 实现接口获得服务器返回的数据 4.解析数据 来我们一先来看第一步 请求网络 在这里请求网络我们用Volley .Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健…
环境搭建 windows系统上需要以下软件: android SDK -- app开发工具包, 开发运行环境(包括SDK管理工具,和虚拟设备管理). JDK -- java 开发工具包, 负责app代码编译运行. eclipse -- app开发集成环境, 开发app代码, 编译后在 android SDK上运行调试. ADT -- eclipse 的 android 开发工具插件, 将android SDK植入eclipse. 具体搭建步骤: Android开发环境搭建指南 本文以window…
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有说的不对的地方请大家指点. SwipeRefreshLayout 是Google在support v4 19.1版本的library更新的一个下拉刷新组件,也就是说 开发的时候把Android版本调到4.4或者以上才会有这个. 先来看看效果图 再来看看布局文件里的代码(我这里放的是一个ListVie…
前言: 已经数月没有来园子了,写博客贵在坚持,一旦松懈了,断掉了,就很难再拾起来.但是每每看到自己博客里的博文的浏览量每天都在增加,都在无形当中给了我继续写博客的动力.最近这两天有听到Jbehave这个名词,上网查了一通,原来是和测试相关的,之前一直做开发,没有做过真正意义上的测试,对于测试的理解更是少之又少.通过这两天的查阅,现将自己的一些理解以及常见概念罗列出来. 正文: Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者.…
移动端app开发 - iPhone/iPad/Android UI尺寸规范 本笔记抛去无用的前期分析什么的,全是干货,简洁干练 本笔记不单独针对 ios 或者 Android,两种都介绍,当然我们实际开发过程中,也往往是 Android一套,ios一套 (一)设计规范与设计流程 了解设计规范,熟悉 Android 和 ios 规范差别,了解界面中主要设计元素 关键词: ios 设计基础规范,Android 设计规范,常用界面尺寸,布局规范,图标规范,文字规范 设计规范可以很好保证产品一致性,提升…