android框架

Android OpenGL学习笔记

与世无争的帅哥 提交于 2020-01-03 08:38:38
1、什么是 OpenGL?   OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。OpenGL 的前身是 SGI 公司为其图形工作站开的 IRIS GL。IRIS GL 是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在 IRIS GL 的基础上开发 OpenGL。 2、OpenGL 的发展历程   1992年7月发布了OpenGL 1.0 版本,并与微软共同推出 Windows NT 版本的 OpenGL 。   1995年 OpenGL 1.1 版本面市,加入了新功能,并引入了纹理特性等等。   一直到2009年8月Khronos小组发布了OpenGL 3.2,这是一年以来OpenGL进行的第三次重要升级。 3、OpenGL ES 简介 Android 3D 引擎采用的是OpenGL ES。OpenGL ES是一套为手持和嵌入式系统设计的3D引擎API,由Khronos公司维护。在PC领域,一直有两种标准的3D API进行竞争,OpenGL 和 DirectX。一般主流的游戏和显卡都支持这两种渲染方式,DirectX在Windows平台上有很大的优势,但是 OpenGL 具有更好的跨平台性。 由于嵌入式系统和PC相比,一般说来,CPU、内存等都比PC差很多,而且对能耗有着特殊的要求,许多嵌入式设备并没有浮点运算协处理器

Android 系统框架简介

☆樱花仙子☆ 提交于 2020-01-03 07:16:06
  从整体系统框架而言,Android系统分成内核层、硬件抽象层、系统运行层、应用程序框架层以及应用程序层。   ·内核层   基于Linux操作系统,开发的系统驱动层。   ·硬件抽象层   进一步降低Android系统与硬件的耦合度   ·系统运行库层   包含了支撑整个系统正常运行的基础库。多数是由C/C++实现。   ·应用程序框架层   一方面为上层应用程序提供了API接口;另一方面也囊括了不少系统级服务进程的实现,是与Android应用开发者关系最直接的一层。   一般都是JAVA语言编写。   ·应用程序层   。。。 来源: https://www.cnblogs.com/xiaodai-v/p/5945167.html

Android跨进程通信篇

女生的网名这么多〃 提交于 2020-01-03 05:17:12
前言 转载请声明,转自【https://www.cnblogs.com/andy-songwei/p/10256379.html】,谢谢! 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一。Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Android开发高级工程师必须要跨过的一道坎。但是,我们是否真的清楚,Android中都有哪些方式实现跨进程通信呢?这些方式都有哪些优缺点?如何选择这些通信方式?Binder是什么?为什么要引入Binder?Binder是这么样实现跨进程通信的?AIDL是什么?AIDL和Binder又有什么关系呢?...... 本文将对Android的跨进程通、进程内通信等方面做一些总结,以及比较详细地介绍AIDL的使用,主要内容如下: 其行文脉络大致如下,希望能加深读者对这方面内容的记忆:(1)Android基于Linux系统,所以先说系统进程相关知识和Linux IPC。(2)总结Android的IPC,顺带总结了Android进程内组件之间的通信方式。(3)Android为了克服Linux IPC中的缺点,引入了Binder,所以对Binder做了一些宏观上的介绍。(4)AIDL是实现Binder最常用的工具,所以详细介绍了AIDL相关内容。 一、基础知识简介

都说衣不如新人不如故,技术是学新不学旧的?IPC+view+Handler+线程。

吃可爱长大的小学妹 提交于 2020-01-03 04:06:20
刚刚过去2019,新的一年2020年。都说衣不如新人不如故,技术是学新不学旧的?可是旧的知识不巩固,根基不固很容易在面试或者实战遇到很大的问题的 以下知识点PDF版后续可见 更多面试内容等等 更多完整项目下载。未完待续。源码。图文知识后续上传github。 可以点击 关于我 联系我获取 https://github.com/xiangjiana/Android-MS 一丶线程篇 1、线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解? 参考答案 : 使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或则“过度切换”的问题,归纳总结就是 重用存在的线程,减少对象创建、消亡的开销,性能佳。 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞 提供定时执行、定期执行、单线程、并发数控制等功能。 Android 中的线程池都是直接或间接通过配置 ThreadPoolExecutor 来实现不同特性的线程池.Android 中最常见的类具有不同特性的线程池分别为: newCachedThreadPool : 只有非核心线程,最大线程数非常大,所有线程都活动时会为新任务创建新线程,否则会利用空闲线程 ( 60s 空闲时间,过了就会被回收,所以线程池中有

都说衣不如新人不如故,技术是学新不学旧的?IPC+view+Handler+线程。

梦想与她 提交于 2020-01-02 22:30:36
刚刚过去2019,新的一年2020年。都说衣不如新人不如故,技术是学新不学旧的?可是旧的知识不巩固,根基不固很容易在面试或者实战遇到很大的问题的 以下知识点PDF版后续可见 更多面试内容等等 (更多完整项目下载。未完待续。源码。图文知识后续上传github。) ( VX:mm14525201314 ) https://github.com/xiangjiana/Android-MS 一丶线程篇 1、线程池的好处? 四种线程池的使用场景,线程池的几个参数的理解? 参考答案 : 使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或则“过度切换”的问题,归纳总结就是 重用存在的线程,减少对象创建、消亡的开销,性能佳。 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞 提供定时执行、定期执行、单线程、并发数控制等功能。 Android 中的线程池都是直接或间接通过配置 ThreadPoolExecutor 来实现不同特性的线程池.Android 中最常见的类具有不同特性的线程池分别为: newCachedThreadPool : 只有非核心线程,最大线程数非常大,所有线程都活动时会为新任务创建新线程,否则会利用空闲线程 ( 60s 空闲时间,过了就会被回收

android自动化测试--appium运行的坑问题及解决方法

淺唱寂寞╮ 提交于 2020-01-02 18:21:47
问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress 之前的会话没有关闭,然后你又运行了测试实例,也没有设置覆盖. 解决: 1. 重新停止appium服务,开启Appium服务 2. 在Genarel Setting那里设置覆盖Session,重启Appium 测试结束在AfterClass加driver.quit() 2. error: Failed to start an Appium session, err was: Error: Command failed: C:\Windows\system32\cmd.exe /s /c “D:\android-sdk-windows\platform-tools\adb.exe -s adb server version (32) doesn’t match this client (36); killing… wait-for-device” error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037: 没有链接上手机或者模拟器,请确认已经连接成功,重新链接 3.

Android 架构组件之 Lifecycle

坚强是说给别人听的谎言 提交于 2019-12-31 20:53:17
文章目录 1. 为什么要使用 Lifecycle? 1.1 在 Lifecycle 出现之前,实现 Activity 与 Presenter 的绑定 1.2 使用 Lifecycle 完成 Activity 与 Presenter 的绑定 2. 分析 Lifecycle 的组成及实现原理 2.1 Lifecycle 在 Activity 中的使用 2.2 Lifecycle 在 Fragment 中的使用 3. 总结一下 Lifecycle 的使用 参考链接 Lifecycle 是 Google 给出的架构组件之一,它能够感知具有生命周期的组件(如 Activity 和 Fragment)的生命周期变化。本文将从以下几个方面对 Lifecycle 进行介绍: 为什么要使用 Lifecycle? 分析 Lifecycle 的组成及实现原理; 总结一下 Lifecycle 的使用 1. 为什么要使用 Lifecycle? Lifecycle 能够感知具有生命周期的组件(如 Activity 和 Fragment)的生命周期变化, 使用 Lifecycle 可以避免编写模板代码,同时生成组织性更好,更便于维护的代码。这是 Lifecycle 的特点,下面将从实际开发中的一个案例,来介绍为什么要使用 Lifecycle。 1.1 在 Lifecycle 出现之前,实现 Activity 与

PhoneGap开发环境搭建

主宰稳场 提交于 2019-12-31 20:50:03
PhoneGap开发环境搭建 项目中要用PhoneGap开发,了解了下基本规则,记录一下,以备后查。(只针对Android平台) 一、安装 在安装PhoneGap开发环境之前,需要先安装以下框架: 1. Java SDK 2. Eclipse 3. Android SDK 4. ADT Plugin 5. PhoneGap 说明: 1.Java SDK直接下载安装即可,没什么可说的,安装不了就是人品问题了; 2.Eclipse 也是直接下载安装,建议为classic版的; 3.Android SDK和ADT Plugin安装完成后,重启eclipse进入Window->Android SDK Manager进行选择要安装的Android开发框架进行安装 4.PhoneGap包不用安装,直接解压。 二、第一个PhoneGap项目 1.在eclipse中新建Android Project,名字神马的随便取吧; 2.在项目的目录下,建两个文件夹: /libs /assets/www 3.进入将刚刚下载并解压的PhoneGap包里Anroid目录,我们需要的资源都在这个目录下。 将phonegap-x.x.x.js这个js文件(具体名称视当时下载的版本而定)copy到/assets/www目录下, 把phonegap.jar文件copy到/libs目录下。

Android 蓝牙开发(1)

ぐ巨炮叔叔 提交于 2019-12-31 19:14:34
普通蓝牙设备官方文档 Android 平台包含蓝牙网络堆栈支持 ,凭借此支持,设备能以无线方式与其他蓝牙设备交换数据。应用框架提供了通过 Android Bluetooth API 访问蓝牙功能的途径。使用 Bluetooth API Android 应用可以执行下面的操作: 扫描其他蓝牙设备 查询本地蓝牙适配器的配对蓝牙设备 建立 RFCOMM 通道 通过服务发现连接到其他设备 与其他设备进行双向数据传输 管理多个连接 传统蓝牙适用于电池使用强度较大的操作,例如 Android 设备之间的流传输和通信等。针对具有低功耗要求的蓝牙设备,Android 4.3(API 18)中引入了面向低功耗蓝牙的 API 支持。 基础知识 使用 Android Bluetooth API 来完成使用蓝牙进行通信的四项主要任务: 设置蓝牙 、 查找局部区域内的配对设备 或可用设备、 连接设备 ,以及在 设备之间传输数据 。 关于蓝牙的 API 在 android.bluetooth 包中,下面介绍一下和蓝牙相关的主要类 BluetoothAdapter 本地蓝牙适配器,是所有 蓝牙交互的入口点 ,表示蓝牙设备自身的一个蓝牙设备适配器, 整个系统只有一个蓝牙适配器 。通过它可以发现其他蓝牙设备,查询绑定(配对)设备的列表,使用已知的 Mac 地址实例化 BluetoothDevice 以及创建

面试常问知识点,Fragment+Activity+service等等

白昼怎懂夜的黑 提交于 2019-12-31 00:03:17
每一次去面试就是一次对自我知识的总结和审核,如果你想拿到大厂的offer.成功的通过一面二面三面四面,那么我分享的面试学习路线你可以来参考一下(PDF文档版见如下) 那么面试中最常问的小知识点不懂的透彻怕是不行了 ( 顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找 ) https://github.com/xiangjiana/Android-MS 1 、四大组件是什么 1)Activity: 用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个 Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新 Activity 创建时,它就会放到栈顶,这个 Activity 就处于运行状态。 2)Service: 服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。 3)ContentProvider: 内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过 ContentResolver 类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后, ContentResolver 接口的 notifyChange 函数通知那些注册监控特定 URI 的 ContentObserver 对象。 如 果