android实训总结,android实训总结范文

Android应用程序启动流程总结

AMS主要功能:

创新互联-专业网站定制、快速模板网站建设、高性价比成武网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式成武网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖成武地区。费用合理售后完善,十载实体公司更值得信赖。

AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作。还负责启动或杀死应用程序的进程。

WMS主要功能:

为所有窗口分配Surface。

管理Surface的显示顺序、尺寸、位置。

管理窗口动画。

输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息。

PWS主要功能:

PMS 用来管理跟踪所有应用APK,包括安装,卸载,解析,控制权限等。

SystemServer也是一个进程,包括AMS、PMS、WMS等等。

zygote意为“受精卵“。Android是基于Linux系统的,而在Linux中,所有的进程都是由init进程直接或者是间接fork出来的,zygote进程也不例外。

App进程是用户点击桌面icon时,通过Launcher进程请求SystemServer,再调用Zygote孵化的。

①点击启动一个App,Launcher进程采用Binder IPC向ActivityManagerService发起startActivity请求;

②ActivityManagerService接收到请求后,向zygote进程发送创建进程的请求;

③Zygote进程fork出新的子进程,即App进程;

④App进程通过Binder IPC向sytem_server进程发起绑定Application请求;

⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;

⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;

⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。

⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。

备注:

Launcher,PMS,Zygote,App进程是三个独立的进程,相互通信就需要使用进程间通信机制。与Zygote通信是使用的socket通信,Launcher,PMS,App进程间使用的是Binder机制。

学习android软件测试有什么需要注意的吗?

北京联想利泰软件实训教育中心

第一阶段:android技术准备

实训目标:通过这部分的学习,学员能够达到学习android开发课程的基本要求。熟练使用Java语言,实现GUI桌面应用程序的开发JDK的安装和配置开发工具Eclipse3.4安装。

实训知识点:

Java标识符、数据类型流程控制、面向对象编程、继承、抽象类、接口、包、异常、IO流、Swing、游戏算法介绍。

第二阶段:android入门

实训目标:通过这部分的学习,学员具备了android程序开发的能力,能独立完成常用的应用软件。

实训知识点:

Android系统概述和内置工具、Android 开发环境的搭建和启动模拟器、建立android工程、Android应用程序开发及运行编译结构、API参考文档的使用、使用am工具启动android应用程序、部署应用到真实手机、控件和事件编程、菜单编程、对话框编程、视图组编程、各种布局的使用、Grid视图组、List视图组、使用Tab组织UI

第三阶段:android进阶

实训目标:通过这部分的学习,学员的android开发能力会有大幅提高。等传感器编程、android优化和性能提高。

实训知识点及案例分析:

Service概述、创建和启动、生命周期、权限及跨进程调用;广播的概念及生命周期、广播发送的权限广播接收器的实现、接收SMS短信、播放MP3;内容提供器的概念作用和常见接口、使用内容提供器实现增删改查、内容提供其权限和创建内容提供器、SQLite数据库添删改查操作、使用list视图组显示数据;Widget概念和制作方法、Widget各种XML描述文件详解

2D图形图像及文本、Gallery UI编程、GridView编程、OnDraw编程、drawable编程

基本动画编程技巧、Tween动画、Frame动画、Timer

OpenGL ES 的2D和3D绘图

GPS服务、GPRS网络使用、android蓝牙开发、

android方向、加速表、光线、磁场、临近性、温度

第四阶段:项目实战

实训目标:本阶段让学员开发,设计Android网上购物系统,其中包括Android图形界面开发,Android声音,Android网络通讯,和服务器后端进行通讯交换数据。

Android性能优化总结

常用的Android性能优化方法:

一、布局优化:

1)尽量减少布局文件的层级。

层级少了,绘制的工作量也就少了,性能自然提高。

2)布局重用 include标签

3)按需加载:使用ViewStub,它继承自View,一种轻量级控件,本身不参与任何的布局和绘制过程。他的layout参数里添加一个替换的布局文件,当它通过setVisibility或者inflate方法加载后,它就会被内部布局替换掉。

二、绘制优化:

基于onDraw会被调用多次,该方法内要避免两类操作:

1)创建新的局部对象,导致大量垃圾对象的产生,从而导致频繁的gc,降低程序的执行效率。

2)不要做耗时操作,抢CPU时间片,造成绘制很卡不流畅。

三、内存泄漏优化:

1)静态变量导致内存泄漏   比较明显

2)单例模式导致的内存泄漏 单例无法被垃圾回收,它持有的任何对象的引用都会导致该对象不会被gc。

3)属性动画导致内存泄漏  无限循环动画,在activity中播放,但是onDestroy时没有停止的话,动画会一直播放下去,view被动画持有,activity又被view持有,导致activity无法被回收。

四、响应速度优化:

1)避免在主线程做耗时操作 包括四大组件,因为四大组件都是运行在主线程的。

2)把一些创建大量对象等的初始化工作放在页面回到前台之后,而不应该放到创建的时候。

五、ListView的优化:

1)使用convertView,走listView子View回收的一套:RecycleBin 机制

主要是维护了两个数组,一个是mActiveViews,当前可见的view,一个是mScrapViews,当前不可见的view。当触摸ListView并向上滑动时,ListView上部的一些OnScreen的View位置上移,并移除了ListView的屏幕范围,此时这些OnScreen的View就变得不可见了,不可见的View叫做OffScreen的View,即这些View已经不在屏幕可见范围内了,也可以叫做ScrapView,Scrap表示废弃的意思,ScrapView的意思是这些OffScreen的View不再处于可以交互的Active状态了。ListView会把那些ScrapView(即OffScreen的View)删除,这样就不用绘制这些本来就不可见的View了,同时,ListView会把这些删除的ScrapView放入到RecycleBin中存起来,就像把暂时无用的资源放到回收站一样。

当ListView的底部需要显示新的View的时候,会从RecycleBin中取出一个ScrapView,将其作为convertView参数传递给Adapter的getView方法,从而达到View复用的目的,这样就不必在Adapter的getView方法中执行LayoutInflater.inflate()方法了。

RecycleBin中有两个重要的View数组,分别是mActiveViews和mScrapViews。这两个数组中所存储的View都是用来复用的,只不过mActiveViews中存储的是OnScreen的View,这些View很有可能被直接复用;而mScrapViews中存储的是OffScreen的View,这些View主要是用来间接复用的。

2)使用ViewHolder避免重复地findViewById

3)快速滑动不适合做大量异步任务,结合滑动监听,等滑动结束之后加载当前显示在屏幕范围的内容。

4)getView中避免做耗时操作,主要针对图片:ImageLoader来处理(原理:三级缓存)

5)对于一个列表,如果刷新数据只是某一个item的数据,可以使用局部刷新,在列表数据量比较大的情况下,节省不少性能开销。

六、Bitmap优化:

1)减少内存开支:图片过大,超过控件需要的大小的情况下,不要直接加载原图,而是对图片进行尺寸压缩,方式是BitmapFactroy.Options 采样,inSampleSize 转成需要的尺寸的图片。

2)减少流量开销:对图片进行质量压缩,再上传服务器。图片有三种存在形式:硬盘上时是file,网络传输时是stream,内存中是stream或bitmap,所谓的质量压缩,它其实只能实现对file的影响,你可以把一个file转成bitmap再转成file,或者直接将一个bitmap转成file时,这个最终的file是被压缩过的,但是中间的bitmap并没有被压缩。bitmap.compress(Bitmap.CompressFormat.PNG,100,bos);

七、线程优化:

使用线程池。为什么要用线程池?

1、从“为每个任务分配一个线程”转换到“在线程池中执行任务”

2、通过重用现有的线程而不是创建新线程,可以处理多个请求在创建销毁过程中产生的巨大开销

3、当使用线程池时,在请求到来时间 ,不用等待系统重新创建新的线程,而是直接复用线程池中的线程,这样可以提高响应性。

4、通过和适当调整线程池的大小 ,可以创建足够多的线程以使处理器能够保持忙碌状态,同时还可以防止过多线程相互竞争资源而使应用程序耗尽内存或者失败。

5、一个App里面所有的任务都放在线程池中执行后,可以统一管理 ,当应用退出时,可以把程序中所有的线程统一关闭,避免了内存和CPU的消耗。

6、如果这个任务是一个循环调度任务,你则必须在这个界面onDetach方法把这个任务给cancel掉,如果是一个普通任务则可cancel,可不cancel,但是最好cancel

7、整个APP的总开关会在应用退出的时间把整个线程池全部关闭。

八、一些性能优化建议:

1)避免创建过多对象,造成频繁的gc

2)不要过多使用枚举,枚举占用的空间比整型大很多

3)字符串的拼接使用StringBuffer、StringBuilder来替代直接使用String,因为使用String会创建多个String对象,参考第一条。

4)适当使用软引用,(弱引用就不太推荐了)

5)使用内存缓存和磁盘缓存。


新闻名称:android实训总结,android实训总结范文
标题URL:http://ybzwz.com/article/dsgjogg.html