android框架

Android中Application类用法

一曲冷凌霜 提交于 2020-01-07 12:22:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.应用场景:   在Android中,可以通过继承Application类来实现应用程序级的全局变量,这种全局变量方法相对静态类更有保障,直到应用的所有Activity全部被destory掉之后才会被释放掉。 2.Application类   Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个 Application对象,用来存储系统的一些信息。   Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。   通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。   启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行

Android开源框架ImageLoader的完美例子

懵懂的女人 提交于 2020-01-07 00:46:26
本文转载自: https://www.cnblogs.com/zgz345/p/3502315.html 作者:zgz345 转载请注明该声明。 很多人都在讨论如何让图片能在异步加载更加流畅,可以显示大量图片,在拖动ListView的时候不会出现卡的现象。关于 Image Loader这个开源框架的使用有很多网友都介绍过,不过还不够清楚,这里有一个关于这个开源项目的完美例子,ListView的图片加载、GridView的图片加载、ViewPager的图片加载、Gallery画廊的图片加载、Widget的使用。很完善的一个例子,在这里我把所有界面效果做出博客分享出来,需要源码的朋友到我的资源页下载 下载地址: http://download.csdn.net/detail/wwj_748/5975847 要使用ImageLoader就要到这里下载jar包: https://github.com/nostra13/Android-Universal-Image-Loader 然后导入项目中去就行了 项目文档结构图: 从界面说起,界面本身是没什么好说的,就是如何在xml当中进行定义罢了 有以下这么多个布局文件 一个一个来看呗 首先是这样的效果 这个在Android4.2.2比较好看,在Android2.3.3就显得比较挫。 /2013.8.19_Universal_Image

android view框架总结

不羁岁月 提交于 2020-01-06 22:27:45
引言 学习android studio来开发一个测试demo,之前使用的是Qt,但是逐步看了android studio的使用方法之后,发现与Qt creator的使用上比较类似。目前正在看关于view属性的相关知识点,于是有一点小总结,以图文的形式来进行总结。 正文 视图view基本属性 视图组ViewGroup是一类特殊视图, 所有的布局类视图都是从它派生而来的。 Android中的视图分为两类, 一类是布局, 另一类是控件。 布局与控件的区别在于: 布局本质上是个容器, 里面还可以放其他视图(包括子布局和子控件) ; 控件是一个单一的实体, 已经是最后一级, 下面不能再挂其他视图。 LinearLayout是最常用的布局, 名字叫线性布局。 顾名思义, LinearLayout下面的子视图就像用一根线串了起来, 所以LinearLayout内部视图的排列是有顺序的, 要么从上到下依次垂直排列, 要么从左到右依次水平排列。 LinearLayout除了继承View/ViewGroup类的所有属性和方法外, 还有其特有的XML属性。 手机屏幕的显示空间有限, 常常需要上下滑动或左右滑动才能拉出其余页面内容, 可惜Android的布局节点都不支持自行滚动, 这时就要借助ScrollView滚动视图实现了。 与线性布局类似, 滚动视图也分为垂直方向和水平方向两类,

Android Framework 分析

喜夏-厌秋 提交于 2020-01-04 05:36:34
Android Framework 分析 (一) 目录树 /framework/base/api /framework/base/awt /framework/base/build /framework/base/camera 关于 camera 的 HAL 接口库。最终生成 native 共享库 libcamera.so , 编译时根据是否定义 USE_CAMERA_STUB 来决定系统是否有 Camera 硬件支持。若没有实际的 Camera 硬件,则编译时会和虚拟 camera 静态库( libcamerastub.a, 由 camerahardwarestub.cpp,fakecamera 生成)链接生成 libcamera.so 。 /framework/base/cmds 关于 android 系统启动时用到的 command 等 /framework/base/cmds/am /framework/base/cmds/app_process 可执行文件 app_process ,该文件可以根据输入参数决定是 Zygote 启动(参考 init.rc 中的语句 service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server ) . 该执行程式会链接

android App启动过程

两盒软妹~` 提交于 2020-01-04 05:25:50
本文以图文并茂的形式简单介绍一个APP从启动到主页面显示经历了哪些流程,以及实现的原理。不介绍具体源码,仅仅构建一个大体框架。 启动流程: ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求; ②system_server进程接收到请求后,向zygote进程发送创建进程的请求; ③Zygote进程fork出新的子进程,即App进程; ④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求; ⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求; ⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息; ⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。 ⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。 上面的一些列步骤简单介绍了一个APP启动到主页面显示的过程

android WebView Note

老子叫甜甜 提交于 2020-01-04 03:31:10
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。 什么是webkit WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。 传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过, 随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。 这里我们初步体验一下在android是使用webview浏览网页,在SDK的Dev Guide中有一个WebView的简单例子 。 在开发过程中应该注意几点: 1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。 2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。

WebView性能、体验分析与优化

落爺英雄遲暮 提交于 2020-01-04 03:27:14
在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便利性的同时,WebView的性能体验却备受质疑,导致很多客户端中需要动态更新等页面时不得不采用其他方案。 以发展的眼光来看,功能的动态加载以及三端的融合将会是大趋势。那么如何克服WebView固有的问题呢?我们将从性能、内存消耗、体验、安全几个维度,来系统的分析客户端默认WebView的问题,以及对应的优化方案。 性能 对于WebView的性能,给人最直观的莫过于:打开速度比native慢。 是的,当我们打开一个WebView页面,页面往往会慢吞吞的loading很久,若干秒后才出现你所需要看到的页面。 这是为什么呢? 对于一个普通用户来讲,打开一个WebView通常会经历以下几个阶段: 交互无反馈 到达新的页面,页面白屏 页面基本框架出现,但是没有数据;页面处于loading状态 出现所需的数据 如果从程序上观察,WebView启动过程大概分为以下几个阶段: 如何缩短这些过程的时间,就成了优化WebView性能的关键。 接下来我们逐一分析各个阶段的耗时情况,以及需要注意的优化点。 WebView初始化 当App首次打开时,默认是并不初始化浏览器内核的;只有当创建WebView实例的时候,才会创建WebView的基础框架。

WebView性能、体验分析与优化

一个人想着一个人 提交于 2020-01-04 03:26:56
育新 徐宏 嘉洁 · 2017-06-09 20:03 在App开发中,内嵌WebView始终占有着一席之地。它能以 较低的成本 实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对 热更新 的封锁。 然而便利性的同时,WebView的性能体验却 备受质疑 ,导致很多客户端中需要动态更新等页面时不得不采用其他方案。 以发展的眼光来看,功能的动态加载以及 三端的融合将会是大趋势 。 那么如何克服WebView固有的问题呢? 我们将从性能、内存消耗、体验、安全几个维度,来系统的分析客户端默认WebView的问题,以及对应的优化方案。 性能 对于WebView的性能,给人最直观的莫过于: 打开速度比native慢 。 是的,当我们打开一个WebView页面,页面往往会慢吞吞的loading很久,若干秒后才出现你所需要看到的页面。 这是为什么呢? 对于一个普通用户来讲,打开一个WebView通常会经历以下几个阶段: 交互 无反馈 到达新的页面, 页面白屏 页面基本框架出现,但是没有数据; 页面处于loading状态 出现所需的数据 如果从程序上观察,WebView启动过程大概分为以下几个阶段: 如何 缩短这些过程的时间 ,就成了优化WebView性能的关键。 接下来我们逐一分析各个阶段的耗时情况,以及需要注意的优化点。 WebView初始化 当App首次打开时

【原创】Android View框架总结(三)View工作原理

十年热恋 提交于 2020-01-03 13:46:29
测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程 MeasureSpec SpecMode MeasureSpec和LayoutParams RootMeasureSpec 测量/布局/绘制顺序 View什么时候测量/布局/绘制? Invalidate,requestLayout,requestFocus最终都会调用到ViewRoot中的schedulTraversale(),该函数发起一个异步消息,消息处理中调用performTraversals()方法对整个View进行遍历。 Invalidate 请求重绘view树,假如视图大小没有变化就不会调用layout(),只绘制那些需要重绘的视图,谁请求就重绘谁(ViewGroup调用就重绘整个ViewGroup) requestLayout 只对view树重新layout,会导致调用measure和layout过程,不会调用draw()过程 requestFocus 请求view树的draw过程,但只绘制需要重绘的视图 setVisibility() 当View可视状态在INVISIBLE转换VISIBLE时,会间接调用invalidate()方法, 当View的可视状态在INVISIBLE/ VISIBLE 转换为GONE状态时

Android OpenGL 学习笔记 --开始篇

那年仲夏 提交于 2020-01-03 08:39:16
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://terryblog.blog.51cto.com/1764499/346996 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 进行的第三次重要升级。 具体特点及功能、 OpenGL 现状、发展历程、 OpenGL 规范、编程入门请 点击这里 。 3、OpenGL ES 简介 Android 3D 引擎采用的是 OpenGL ES 。 OpenGL ES 是一套为手持和嵌入式系统设计的 3D 引擎 API ,由