android框架

Android WIFI 详解

荒凉一梦 提交于 2019-12-05 01:18:54
最 近研究Wifi模块,查了不少的相关资料,但发现基本上是基于android2.0版本的的分析,而现在研发的android移动平台基本上都是2.3的 版本,跟2.0版本的差别,在Wifi模块上也是显而易见的。2.3版本Wifi模块没有了WifiLayer,之前的WifiLayer主要负责一些复 杂的Wifi功能,如AP选择等以提供给用户自定义,而新的版本里面的这块内容基本上被WifiSettings所代替。 本文就是基于android2.3版本的Wifi分析,主要分为两部分来分别说明: (1) Wifi模块相关文件的解析 (2) Wpa_supplicant解析 (3) Wifi的启动流程(有代码供参考分析) 一,Wifi模块相关文件解析 1) wifisettings.java packages/apps/Settings/src/com/android/settings/wifiwifisettings.java 该类数据部分主要定义了下面几个类的变量: { private final IntentFilter mFilter; //广播接收器,用来接收消息并做响应的处理工作 privatefinal BroadcastReceiver mReceiver; //这是一个扫描类,会在用户手动扫描 AP时被调用 privatefinal Scanner mScanner;

Ubuntu下android学习——(2)Android系统构架分析和应用程序目录结构分析

你离开我真会死。 提交于 2019-12-05 01:14:51
一、 Android 系统构架 Android 系统从底向上一共分了 4 层,每一层都把底层实现封装,并暴露调用接口给上一层。 英文不好,那下面是简单翻译的版本: Linux 内核 (LinuxKernel) Android 运行在 linuxkernel 2.6 之上,但是把 linux 内受 GNU 协议约束的部分做了取代,这样在 Android 的程序可以用于商业目的。 Linux 内核是硬件和软件层之间的抽象层。 图中我们可以看出驱动就是以 C 或汇编代码来控制硬件并向上提供接口操作 中间件 中间件包括两部分:核心库和运行时 (libraries& Android runtime) 核心库包括, Android 的核心库主要是基于 C\C++ 实现的一些原生组件,包括 C 库 Bionic 、浏览器引擎 Webkit 、多媒体引擎 OpenCORE 、 SQL 数据库 SQLite 、 3D 渲染引擎 OpenGLES 、位图和字体矢量渲染引擎 FreeType 、 2D 图像渲染引擎 SGL ( SkiaGraphics Library )、互联网安全协议 SSL 和 TSL 等。 1,SurfaceManager 当系统同时执行多个应用程序时, Surface Manager 会负责管理显示与存取操作间的互动,另外也负责将 2D 绘图与 3D 绘图进行显示上的合成。 2

答应我,我踩过的坑你别再踩了好嘛,那些年社招的坑坑洼洼

有些话、适合烂在心里 提交于 2019-12-04 21:06:30
回想起前年左右,自己去社招的时候,一连串下来问了好多现在都是历历在目。回想起以前才觉得 纸上得来终觉浅,绝知此事要躬行 所有的面试题答案并不是百分百的标准,要靠你自己的感悟和有自己的想法,才能独树一帜脱颖而出的。所有仅供参考 所有的都在这个PDF中有所汇总,983页花了几十个小时整理出来的。还是比较全面的有Android,Java小知识,到性能优化.线程.View.OpenCV.NDK.大厂面试,算法等等,大家可以联系我看看对自身有没有用 (更多完整项目下载。未完待续。源码。图文知识后续上传github。) 可以联系我获取完整PDF ( VX:mm14525201314 ) 1丶如何进行单元测试,如何保证 App 稳定 ? 要测试 Android 应用程序,通常会创建以下类型自动单元测试 本地测试: 只在本地机器 JVM 上运行,以最小化执行时间,这种单元测试不依赖于 Android 框架,或者即使有依赖,也很方便使用模拟框架来模拟依赖,以达到隔离 Android 依赖的目的,模拟框架如Google 推荐的 Mockito; 检测测试: 真机或模拟器上运行的单元测试,由于需要跑到设备上,比较慢,这些测试可以访问仪器(Android 系统)信息,比如被测应用程序的上下文,一般地,依赖不太方便通过模拟框架模拟时采用这种方式; 注意: 单元测试不适合测试复杂的 UI 交互事件 App

从开发小白到音视频专家

旧街凉风 提交于 2019-12-04 20:46:24
这是由一篇我的演讲稿整理出来的文章,目标读者是对音视频开发感兴趣但是又不知道如何下手的初学者们,希望把我的经验分享出来,对大家有所帮助。 1. 成长的烦恼 经常收到一些网友的来信或者留言,反馈如下这样的困惑: “我是一名应届毕业生,该如何快速地成长起来” “我只懂 C/C++,是学 Android 开发有前途,还是 iOS 开发有前途?” “我是一名 Android/iOS 开发,已经可以独立完成一个完整的 App 开发上线,该如何继续提升?” “我想从事音视频开发,该如何入门? 如何进阶 ?” 很高兴看到大家有这样的问题,因为这也从侧面反映了你是一个积极向上,想不断努力来提升自己的人。 我就先从一个简单的问题聊起,“到底 Android 开发有前途还是 iOS 开发有前途?” 其实这个问题跟 “PHP 是不是世界上最好的语言一样”,只会引发争论,却没有什么实际价值,在我看来,无论是 Windows、Linux、Android 还是 iOS 开发,都没有什么优劣之分,它们其实都有着很多的共同点,那就是: 都是基于操作系统提供的 API 完成特定需求的实现 当然,也有些不同的地方,比如: 系统的 API 和特性不同 编程语言不同,Windows/Linux 以 C/C++ 为主,Android 以 Java 为主,iOS 以 Object C 为主 但无论什么平台

Android——application全局类的使用

萝らか妹 提交于 2019-12-04 20:39:24
目录 1.概述 2.Application基类 3.自定义Application类 4.Application的生命周期 5.Application对象的回调函数 6.Application对象的作用 7.静态单列共享数据和Application对象共享数据的对比 1.概述 通过学习Android提供的Application类,了解相关用法,对Application类进行扩展,主要用于维护应用中的全局状态(整个应用中的全局变量),比如qq中昵称在qq整个应用各处都可获取并使用。 2.Application基类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,是维护应用全局状态的基类,用来存储系统的一些信息。Android系统 自动(默认的,不管你有没有定义)会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。如下清单文件mainiftest中的application就是整个基类。 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string

Android著名开源库

安稳与你 提交于 2019-12-04 20:36:58
UI方面 1、 绘制图表MPAndroidChart、hellocharts: https://github.com/PhilJay/MPAndroidChart https://github.com/lecho/hellocharts-android image 2、 Lottie动画,支持Android, iOS, React Native,Web: https://github.com/airbnb/lottie-android Example1.gif 3、 RecyclerView万能适配器: https://github.com/CymChad/BaseRecyclerViewAdapterHelper 4、 Android智能下拉刷新框架-SmartRefreshLayout: https://github.com/scwang90/SmartRefreshLayout android-Ultra-Pull-To-Refresh: https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh gif_practive_weibo.gif 5、 通过手机缩放图片PhotoView: https://github.com/chrisbanes/PhotoView https://github.com/Piasy

Android图片缓存之初识Glide

元气小坏坏 提交于 2019-12-04 20:21:47
前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架。技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实现方案不能满足项目的需求改用Afinal,由于Afinal不再维护而选择了师出同门的Xutils,中间也接触过别的开源框架比如Picasso,对Picasso的第一次印象就不太好,初次接触是拿到了公司刚从外包公司接手过来的图片社交类app,对内存占用太大,直接感受就是导致ListView滑动有那么一点卡顿,老牌的图片缓存框架universalImageLoader听说过一直没有真正使用过,之前项目都很小,差不多几百万级别的app,一直使用的都是Xutils,最近觉得项目大起来了,万一Xutils不维护了或者说要求支持的图片格式多起来的时候,可能Xutils就不是最佳选择了,这也是来学习Gilde的根本动机吧。其实本来想着去学习Facebook的Fresco图片框架,但是简单的看了一下,需要连同自定义控件一起使用,功能虽然强大,但是对于已经在维护的项目修改成本那可不是一般的高,以后有兴趣在学习吧! 图片缓存相关博客地址: Android图片缓存之Bitmap详解 Android图片缓存之初识Glide Android图片缓存之Glide进阶 Android图片缓存之Lru算法

React Native For Android 架构初探

喜你入骨 提交于 2019-12-04 20:10:17
Facebook 在2015.9.15发布了 React Native for Android,把JavaScript 开发技术扩展到了Android平台。React Native 让开发者使用 JavaScript 和 React 编写应用,利用相同的核心代码就可以创建 基于Web,iOS 和 Android 平台的原生应用。本文将浅析Android React的架构及相关基础知识。 环境搭建及调试相关知识参考 官网文档 即可,本文不再赘述。 一.React架构分析 1.层次架构: Java层:java层为逻辑入口,启动C++层的javascript解析器,执行js通过c++传递来的渲染指令,从而构建NativeUI等。java层依赖于众多优秀开源库,在图片处理使用的是Fresco,网络通信使用的是okhttp,当然还有众多工具类,如Json解析工具jackson,Animation知名开源库NineOldAndroids,小而全的底层工具类bolts等,在java层均封装为Module。java层核心jar包是react-native.jar,封装了众多上层的interface,如Module,Registry,bridge等,下面会以App的启用过程,完整分析java层的架构。 C++层:c++层最主要是封装了JavaScriptCore,执行对js的解析

最火移动端跨平台方案盘点:React Native、weex、Flutter

三世轮回 提交于 2019-12-04 20:07:04
1、前言 跨平台一直是老生常谈的话题,cordova、ionic、react-native、weex、kotlin-native、flutter等跨平台框架的百花齐放,颇有一股推倒原生开发者的势头。 为什么我们需要跨平台开发? 本质上,跨平台开发是为了增加代码复用,减少开发者对多个平台差异适配的工作量,降低开发成本,提高业务专注的同时,提供比web更好的体验。嗯~通俗了说就是:省钱、偷懒。 目前移动端跨平台开发中,备受关注的方案大致归纳为以下几种情况: 1)react native、weex均使用JavaScript作为编程语言,目前JavaScript在跨平台开发中,可谓占据半壁江山,大有“一统天下”的趋势; 2)kotlin-native开始支持 iOS 和 Web 开发,(kotlin已经成为android的一级语言)也想尝试“一统天下”; 3)flutter是Google跨平台移动UI框架,Dart作为谷歌的亲儿子,毫无疑问Dart成为flutter的编程语言。作为巨头新生儿,在flutter官网也可以看出,flutter同样“心怀天下”(可支持Web端、Android端、iOS端等)。 本篇主要以react-native、weex、flutter,深入聊聊当前最火的这3种跨平台移动开发方案的实现原理、现状与未来。至于为什么只讲它们,因为对比ionic、phoneGap

React Native 在 Airbnb(译文)

非 Y 不嫁゛ 提交于 2019-12-04 19:51:37
在Android,iOS,Web和跨平台框架的横向对比中,React Native本身是一个相对较新且快速开发移动的平台。两年后,我们可以肯定地说React Native在很多方面都是革命性的。这是移动设备的范例转变,我们能够从中受益很多。然而也有明显的痛点,它的优点不仅仅是这些 优点 跨平台 React Native 的主要好处是,您编写的代码可以在Android和iOS上本机运行。使用React Native的大多数功能都能够实现95-100%的共享代码,0.2%的文件是特定于平台的(android.js / ios.js)。 统一设计语言系统(DLS) 我们开发了一种名为DLS的跨平台设计语言。我们有Android,iOS,React Native和每个组件的Web版本。拥有统一的设计语言可以编写跨平台功能,因为它意味着设计,组件名称和屏幕在不同平台上是一致的。但是,我们仍然可以在适用的情况下做出适合平台的决策。例如,我们使用Android 上的原生工具栏和iOS 上的UINavigationBar,我们选择隐藏Android上的披露指标,因为它们不符合Android平台设计指南。 我们选择重写组件而不是包装本机组件,因为为每个平台单独制作适合平台的API更加可靠,并减少了可能不知道如何正确测试React Native中的更改的Android和iOS工程师的维护开销。但是