您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Android移动应用设计与开发--第02章.
手机系统开发与设计计算机学院/任建吉renjianji@hpu.edu.cn第2周手机系统开发与设计2.1Android体系结构应用程序应用程序框架函数库Android运行库Linux内核2.2Activity本周小结本周导读1.2、用Eclipse创建Android应用程序1.2.1、创建HelloWorld项目1、项目名称2、应用程序名称3、包名称4、Activity继承类5、最低SDKAPI版本1.2.2、Android项目目录结构1、src/:java源文件2、gen/:R.java文件,UI资源标识符3、android/:android运行时类文件包4、res/:资源目录①Drawables/:包含图片和图标文件②Layout/:包含UI元素的布局xml文件③Values/:包含string.xml、array.xml、style.xml、color.xml等变量初始值文件④anim/:包含动画文件⑤xml/:应用部件资源文件⑥raw/:包含任意二进制文件⑦menu/:包含定义菜单的xml文件6、assets/:包含文件目录结构(被编译到.apk文件中)7、libs/:包含私有库8、AndroidManifest.xml:应用部署文件9、UI布局文件1.2.3、android程序运行配置1、创建运行配置文件2、Android选项卡3、Target选项卡1.2.4、android程序编译1、字节码文件*.dex2、包文件*.apk虚拟设备(AVD)设置虚拟设备环境1、启动AVDEclipse启动命令行启动:android2、AVD内容VirtualdeviceInstallpackagesAvailablepackages1.3.2、建立AVD1、新建:Target,SDCard,Skin,Hardware2、编辑常用的adb命令adbshell链接手机或模拟器adbpush上传文件adbpull下载文件eg:adbpushkeydata/app就是将key文件上传到用户目录中adbinstall*.apk安装程序adbuninstallcom.example.helloworld如何查看packagename:在/data/app/目录下adbdevices列出所有连接的设备准备工作:配置adb路径到环境变量的path中,即所设置的sdk路径D:\adt-bundle-windows-x86-20131030\sdk\platform-tools删掉activity_main.xml文件中的语句【android:text=“@string/hello_world”;】删掉activity_main.xml语句【android:text=“@string/hello_world”;】后的运行结果在布局文件“activity_main.xml”中“TextView”为控件添加id【android:id=@+id/myTextView】在HelloWorld.java文件中添加声明语句【importandroid.widget.TextView;】在HelloWorld.java文件中引用控件,添加语句【findViewById(R.id.myTextView);】并进行强制类型转换,变为【TextViewmyTextView=(TextView)findViewById(R.id.myTextView);】为控件添加显示内容【myTextView.setText(您好,欢迎来到Android世界!);】运行结果。手机系统开发与设计计算机学院/任建吉renjianji@hpu.edu.cn本节学习目标:了解Android的体系结构1、Linux内核:操作系统,硬件抽象层和硬件驱动2、代码库:DalvikVM、Webkit浏览器、SQLite数据库、Android核心库3、Android应用框架:ActivityManager、ResourceManager、TelephonyManager、WindowManager、ContextManager等4、软件应用:Contacts,phone,browser等2.1Android体系结构Android系统采用了分层的架构,总共四层,由上到下分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层,每一层都使用其下面各层所提供的服务。……浏览器日历通讯录邮件客户端应用程序应用程序框架ActivityManagerContentProvidersWindowManagerViewSystemTelephonyManagerPackageManagerResourceManagerNotificationManagerLocationManagerAndroid运行时核心库Dalvik虚拟机Linux内核安全机制内存管理进程管理网络协议栈电源管理WiFi驱动显示驱动……函数库SurfaceManagerFreeTypeOpenGL|ESSQLiteMediaFrameworkWebKitSGLSSLlibc2.1Android体系结构Linux内核Linux3.4内核(Android4.4)硬件和其他软件堆层之间的一个抽象隔离层提供安全机制、内存管理、进程管理、网络协议堆栈、和驱动程序等Android中基本的Linux命令Android支持的linuxcommand不多,在/system/bin下面可以找到,其中大部分都是Android的工具,只有一小部分是linux原有的命令cat命令,cat/proc/cpuinfo查看设备cpu信息。Ctrl+C退出。top命令,相当于win下的任务管理器,可以看到所有运行的后台任务,以及它们的cpu占用率。Ctrl+C退出。2.1Android体系结构中间件层由函数库和Android运行时构成函数库,主要提供一组基于C/C++的函数库SurfaceManager,支持显示子系统的访问,提供应用程序与2D、3D图像层的平滑连接MediaFramework,实现音视频的播放和录制功能SQLite,轻量级的关系数据库引擎OpenGLES,基于3D图像加速FreeType,位图与矢量字体渲染WebKit,Web浏览器引擎SGL,2D图像引擎SSL,数据加密与安全传输的函数库Libc,标准C运行库,Linux系统中底层应用程序开发接口2.1Android体系结构中间件层Android运行时核心库,提供Android系统的特有函数功能和Java语言函数功能Dalvik虚拟机,是经过优化的多实例虚拟机,基于寄存器架构设计,实现基于Linux内核的线程管理和底层内存管理,采用专用的Dalvik可执行格式(.dex),该格式适合内存和处理器速度受限的系统2.1Android体系结构应用程序框架,提供Android平台基本的管理功能和组件重用机制ActivityManager,管理应用程序的生命周期WindowsManager,启动应用程序的窗体ContentProvider,共享私有数据,实现跨进程的数据访问PackageManager,管理安装在Android系统内的应用程序2.1Android体系结构应用程序框架TeleghonyManager,管理与拨打和接听电话的相关功能ResourceManager,允许应用程序使用非代码资源LocationManager,管理与地图相关的服务功能NotificationManager,允许应用程序在状态栏中显示提示信息2.1Android体系结构应用程序提供一系列的核心应用程序包括电子邮件客户端、浏览器、通讯录和日历等2.3、四种Android组件2.3.1、Activity类(显示UI用户界面)Activity通俗地讲就是用户界面,它有其自身的生命周期。一个应用程序通常包含多个Activity,它们可以互相切换。Activity的使用需要在manifest文件中进行声明。Android系统是通过任务栈来管理Activity的。当一个Activity启动时,会把它压入到该Task的堆栈中,当用户按返回键或者结束掉该Activity时,它会从该Task的堆栈中弹出。当用户按Home键时,当前应用程序的任务栈将转到后台,该任务栈中保存着压入其中的各个Activity的状态。此时,用户可以启动任意其他应用程序,如果是另外的应用程序,那么它所在的任务栈将处于前台,用户可以与之进行相应地交互1、Activity功能显示由Views类扩展的UI元素响应系统和用户事件2、Activity实现继承Activity类,实现自定义子类覆盖onCreate()方法,进行初始化View的UI元素使用startActivity()或startActivityForResult()方法,实现各Activity切换见HelloWorld.java例子手机的拨号器,图片浏览器,等大部分app均为activity的2.3.2、ServiceService不直接与用户进行交互,没有用户界面,能够长期在后台运行,且比Activity具有更高的优先级,在系统资源紧张时不会轻易被Android系统终止。每个服务都是从Service基类中派生的。Service的生命周期没有Activity那样复杂,也是从onCreate()到onDestory()结束,但经历的生命周期方法要更少,过程也相对简单。Service不仅可以实现后台服务的功能,也可以用于进程间的通信。使用Service时,需要在manifest中进行声明。对于进程内的Service调用如左图所示,而对于进程间的Service调用则需要使用AIDL定义进程间的通信接口,如右图所示。ServiceMyServiceMyAppIservice.aidlIservice.stubServiceMyServiceSystemMyApp2.3.2、Service1、Service功能用于长时间的后台服务基于客户-服务模式的绑定服务服务在主线程中运行,不创建新的线程2、Service实现继承Service类,实现一个后台服务子类覆盖onCreate()方法,进行初始化覆盖onBind()方法,实现进程间通信使用startService()方法启动服务配置AndroidManifest.xmlserviceandroid:name=Service1“/service见ServiceExample例子手机的音乐播放器:开启后,同时进行其他操作,音乐也同时播放2.3.3、BroadcastReceiver当系统/应用程序运行时便会向Android注册各种广播,主要有两种注册类型:第一种是非常驻型广播,此类广播会伴随应用程序的生命周期;第二种是常驻型广播,此类广播不随应用程序是否关闭而存在,只要有广播来就会被系统调用自动运行。2.3.3、BroadcastReceiver1、BroadcastReceiver功能作为触发器,接收和响应全局事件2、实现BroadcastReceiver配置AndroidManifest.xml文件的receiver元素(静态注册),(注意:动态注册使用Context.registerReceiver)配置AndroidManifest.xml文件uses-permissionandroid:name=android.permission.RECEIVE_SMS/继承BroadcastReceiver类,实现广播接收子类覆盖onReceiver()方法,处理接收的Intent对象例子手机的来电铃声,短信,等app均含有BroadcastReceiver功能2.3.4、ContentProvider1、ContentProvider功能用于应用程序间存取数据数据存储方式:文件,SQLite数据库,内存Hash映射存储的数据类型,包括:byte,short,int,lo
本文标题:Android移动应用设计与开发--第02章.
链接地址:https://www.777doc.com/doc-2897354 .html