第一篇:Android高级开发技术教学大纲
《Android高级开发技术》课程教学大纲
课程名称(中文):Android高级开发技术
课程名称(英文):Advanced Android Development Technology 适用专业:计算机科学与技术、软件工程、网络工程 课程类别及课程模块:学科专业课程/特色创新课程 课程编码:11A023 学分/开课学期和周学时/学时类型/折算后总学时:
学分:
开课学期: 6
周学时:2+2 学时类型: 理论+实践
折算后总学时:64 教材名称及作者、出版社、出版时间、版次:《第一行代码Android第2版》,郭霖,北京:人民邮电出版社, 2016 大纲主笔人:樊相奎 大纲审定人:李贵洋
一、课程的目的、要求和任务
近几年移动终端的开发发展迅速,相关公司越来越多,随着时间的推移,预计社会对移动终端开发领域人才的需求量也会迅速增多。据悉,在成都的软件开发企业中,有多数企业都或多或少涉及移动终端开发领域。对于移动终端开发平台,目前市场占有率最高,未来发展最有希望是iOS和Andriod开发平台。其中Andriod由具有极度创新能力的Google公司开发,同时Andriod采用开源方式,引入了大量合作开发伙伴,目前全世界有大量的公司采用Andriod作为移动终端开发平台,包括三星、华为、小米等。
开设本课程的目的是使学生比较全面地了解和掌握移动终端设计的基本概念、原理及相关技术,为以后的深入学习打下坚实的基础。具体要求和任务是掌握Andriod移动终端开发平台的具体开发语言、开发工具、调试方法等相关技术。
二、大纲基本内容及学时分配
(一)Android开发起步(2课时)1.2.3.4.5.Android平台简介、背景介绍和平台架构 Android开发环境的搭建,相关软件的下载与安装 虚拟设备的创建和使用 创建“Hello Android” Android应用程序的调试
说明:
(1)基本要求:介绍Android开发起步的相关知识,包括 Android平台Android的背景及其应用程序的框架,通过让学生完成一个hello world app的开发,体验一个android开发过程;
(2)教学重点:Android平台Android的背景及其应用程序的框架,搭建Android的开发环境,使用开发平台创建Android项目;(3)教学难点:平台架构,Android应用程序的调试;
(二)Android应用程序的构成(4课时)
1.2.3.4.5.6.7.8.Android系统架构 Activity生命周期 Android界面的布局 服务—Service 三大组件间通信—Intent AndroidManifest.xml解析 共享数据—content Provider 通知用户—Android Notification
9.Android应用程序的生命周期
说明:
(1)基本要求:主要对Android的基本组件及Android应用程序的构成进行介绍,同时还将对Android应用程序的生命周期进行分析,主要目的是让读者了解Android应用程序的构成,掌握Android基本组件的特性及使用方法。(2)教学重点:了解Android应用程序的构成,掌握Android基本组件的特性及使用方法,Activity以及Intent的概念及使用;
(3)教学难点:掌握应用程序的生命周期以及具体使用场景;
(三)Android布局管理器(4课时)
1.2.3.4.5.6.控件类概述,View类简介、ViewGroup类简介
线性布局,LinearLayout类简介、线性布局案例
表格布局,TableLayout类简介、表格布局案例
相对布局,RelativeLayout类简介、相对布局案例
帧布局,FrameLayout类简介、帧布局案例
绝对布局,AbsoluteLayout类简介、绝对布局案例
说明:
(1)基本要求:介绍的内容为Android平台下的布局管理器。Android中的布局包括线性布局、表格布局、相对布局、帧布局和绝对布局,分别对每个布局管理器进行详细的介绍。
(2)教学重点:了解Android平台下的布局管理器及使用方法;(3)教学难点:布局管理器的嵌套使用,如何合理有效的使用嵌套布局;
(四)Android常用基本控件(2课时)
1.2.文本控件的介绍,TextView类简介、EditText类简介以及使用案例
按钮控件,Button类简介、ImageButton类简介、Patch图片简介以及Patch图片使用案例
3.4.状态开关按钮,ToggleButton类简介以及开关按钮的使用
单选按钮与复选按钮,CheckBox和RadioButton类简介以及单选按钮和复选按钮使用案
5.6.图片控件,ImageView类简介以及图片查看器
时钟控件,AnalogClock和DigitalClock类简介以及时钟控件使用案例 7.日期与时间选择控件,DatePicker类简介、TimePicker类简介以及日期时间控件使用案例
说明:
(1)基本要求:对进行用户界面开发时常用到的Android基本控件进行介绍,主要包括文本框、按钮、单选按钮和复选按钮、状态开关按钮和日期时间控件等,了解这些基本控件的工作方式有助于学习后面要介绍的Android中的高级控件。(2)教学重点:掌握Android基本控件及使用方法;(3)教学难点:不用布局文件,直接代码生成控件;
(五)Android常用高级控件(4课时)
1.2.3.4.5.6.7.8.自动完成文本框,AutoCompleteTextView类简介以及自动完成文本使用案例
下拉列表控件,Spinner类简介以及下拉列表使用案例
列表视图,ListView类简介以及列表视图使用案例
网格视图,GridView类简介以及网格视图使用案例
画廊控件,Gallery类简介以及画廊控件使用案例
滚动视图,ScrollView类简介以及滚动视图使用案例
选项卡,TabHost类简介以及选项卡使用案例
滑块、进度条与星级滑块,ProgressBar、SeekBar、RatingBar类简介以及使用案例
说明:
(1)基本要求;上一章已经介绍了Android中的一些基本控件,本章对Android中常用的高级控件逐一进行介绍。
(2)教学重点:掌握Android常用高级控件及使用方法;(3)教学难点:BaseAdapter适配器的概念以及使用;
(六)菜单与对话框(4课时)
1.菜单功能的开发,包括选项菜单和子菜单简介、选项菜单和子菜单使用案例、上下文菜单
2.对话框功能的开发,包括对话框简介、普通对话框、列表对话框、单选按钮对话框、复选框对话框、日期及时间选择对话框、进度对话框
3.消息提示,Toast的使用,Notification的使用
说明:
(1)基本要求:介绍用户界面中菜单与对话框的开发,同时还会对Android平台下的Toast和Notification进行介绍。
(2)教学重点:掌握Android常用菜单和对话框的概念和使用;(3)教学难点:Notification的概念和使用;
(七)Android事件处理模型(2课时)
1.了解Android中的事件处理概念和模型;基于回调机制的事件处理,基于监听接口的事件处理。
2.掌握Android中的事件处理具体方法,包括OnClickListener、OnLongClickListener、OnFocusChangeListener、OnKeyListener、onTouchEvent、OnCheckedChange、OnItemSelected、日期和时间监听事件等;
3.说明:
(1)基本要求:对Android平台用户界面的各种事件响应进行详细介绍,加深对Android平台的事件处理模型的理解,熟练掌握控件的各种事件处理方法。
(2)教学重点:掌握Android中的事件处理概念以及具体的常用事件及其处理方法;(3)教学难点:理解基于回调机制和基于监听接口事件处理机理;
(八)消息广播与服务(2课时)
1.2.BroadcastReceiver组件,BroadcastReceiver类简介,基于广播的案例
Service组件,Service类简介,基于服务的案例
说明:(1)基本要求:在很多应用程序中,都会通过广播形式来发送和接收消息,当应用程序接收到消息后,一般启动一个Activity或者一个Service进行处理。本章对服务组件Service进行详细介绍,章末通过对一个单机版的音乐播放盒的介绍帮助掌握服务组件的使用方法。
(2)教学重点:对Android的消息广播机制及服务组件运行机理和具体使用方法;(3)教学难点:广播Broadcast、服务Service的运行机制和处理原理;
(九)多线程及消息处理(4课时)
1.2.3.4.Android多线程,概述、创建线程、操作线程 UI线程与非UI线程
多线程中的常用类,包括Handler类、AsyncTask类、Timer定时器等 Android多线程通信机制
说明:
(1)基本要求:了解线程的概念、生命周期,通过实例学习,掌握多线程的创建、使用以及多种具体事项方式。
(2)教学重点:对Android的多线程运行机理和具体使用方法;(3)教学难点:线程同步;
(十)数据处理(4课时)
1.掌握SharedPreferences的使用方法 2.3.4.5.6.掌握各种文件存储的区别与适用情况 了解SQLite数据库的特点和体系结构 掌握SQLite数据库的建立和操作方法 理解ContentProvider的用途和原理(选讲)掌握ContentProvider的创建与使用方法(选讲)
说明:
(1)基本要求:本章要介绍访问手机存储卡的方法及如何在程序中使用SQLite数据库。(2)教学重点:掌握Android数据存储的相关机制和具体使用方法;(3)教学难点:SQLite数据库的具体使用;
授课内容及学时说明:前述大纲章节及学时分配是本门课程指导性意见,针对不同专业学生以及具体授课情况,授课教师对具体章节的内容及学时可进行适当调整,但主要章节知识点(除可选部分)需要覆盖到。
三、与其他课程的关系
1.先行课程:数据库原理、Java 2.后续课程:无
四、考核方式
考核形式:考查
评分标准:平时成绩占30%(主要考察课堂与上机考勤、实验等方面),两次阶段性上机考试占40%,期末作品占30%。
五、参考书目
1.明日科技编著,《Android从入门到精通》,北京:清华大学出版社, 2016 2.李刚编著,《疯狂Android讲义(第3版)》,北京:电子工业出版社, 2015 3.(美)Erich Gamma等著,《设计模式》,北京:机械工业出版社,2013
第二篇:JSP开发技术教学大纲
课程编号:08061700
JSP开发技术
JSP Development
总学时:40
总学分:2.5 课程性质:限选课
开设学期及周学时分配:第6学期;3学时/周 适用专业及层次:计算机科学与技术专业 本科 相关课程:Java语言基础,Java高级编程
教材:《在实战中成长:JSP开发之路》(第一版 影印版),青软实训组编,电子工业出版社,2009年
推荐参考书:《Head First Servlets & JSP》(中文版第3版),Bryan Basham
Kathy Sierra Bert Bates编著 苏钰函 林剑译,中国电力出版社,2006年;《JSP 程序设计》(第三版),张跃平耿祥义编著,清华大学出版社,2009年
一、课程目的及要求
网络及电子商务的迅猛发展,使得Web应用的需求猛增,JSP是Web开发中的一项重要的技术分支。《JSP开发技术》是计算机科学与工程及其他相关学科的一门骨干课程。通过此课程的学习,要求学员学会综合运用JSP标准标签库、EL、JavaBeans组件、数据库访问、个性化、国际化处理、XML数据、Servlet、JavaServer Pages以及如何实现MVC结构。为后期的J2EE开发打下基础。
二、课程内容及学时分配 JSP应用初步(4 课时)1.1 安装配置JDK 1.2 安装配置tomcat 1.3 书写简单的Servlet JSP语法(5课时)2.1 注释
2.2 脚本段 2.3 指令 2.4 动作 2.5表达式 2.6 错误处理
隐含对象(3课时)3.1 与输入输出相关的对象。
3.2 与上下文相关的对象。
3.3 与错误相关的对象。JSTL(9课时)4.1 核心库
4.2 国际化库 4.3 sql库 4.4 xml库
JSP与Javabean(6课时)5.1 学会使用jsp中和javabean相关的标签
Session Tracking(6课时)6.1 会话追逐的4种方式 6.2 重点掌握session Filter与 Listener(6课时)7.1 Filter的原理及使用 7.2 Listener的原理及使用 JSP与JDBC(4课时)8.1 学习Java连接数据库的方式jdbc 8.1.1 注册驱动
8.1.2 连接
8.1.3 语句
8.1.4 结果集
8.1.5 释放 Web架构—MVC(5课时)9.1 Web架构—MVC 9.2 mvc model2的基本认识
9.3 Servlet编程
三、教学重点与难点 JSP语法
重点:掌握JSP的基本语法,包括(注释,指令,动作,脚本段等)难点:基本语法中的指令和动作。隐含对象
重点:掌握Request对象,掌握Response对象,掌握Application对象,掌握Session对象。
难点:Request对象,Response对象,Session对象。JSTL 重点:掌握JSTL核心库的使用 难点:JSTL的核心库 Session Tracking 重点:掌握JSP中4中会话追踪的技术 难点:Session完成会话追踪 Filter与 Listener 重点:掌握Filter的编写及配置应用,掌握常用Listener的编写及配置应用
难点:Filter的编写及配置应用 JSP与JDBC 重点:掌握通过JDBC连接数据库,并完成CRUD。难点:JDBC连接数据,并完成CRUD。
四、主要教学方式
本课程采用多媒体设备,结合PPT及上机的形式进行教学。
五、典型作业练习
1.使用JSP语法在页面上显示当前时间。2.使用JDBC完成数据库的增、删、改、差。3.使用session对象完成购物车的编写。4.使用Filter来完成登录状态的过滤编写。
六、课程考核方式
本课程采用期末闭卷考试方式进行考核。
撰写人:青软实训
审核人:
信息科学技术学院课程简介
JSP开发技术(JSP Development)
课程编号:08061700 课程性质:限选课
开设学期及学时分配:第6学期 3学时/周 适用专业及层次:计算机科学与技术专业 本科
先行课程:java语言基础,java高级编程 后继课程:Struts开发技术,Hibernate开发技术。
教材:《在实战中成长:JSP开发之路》(第一版 影印版),青软实训组编,电子工业出版社,2009年
推荐参考书:《Head First Servlets & JSP》(中文版第3版),Bryan Basham
Kathy Sierra
Bert Bates编著 苏钰函 林剑译,中国电力出版社,2006年;《JSP 程序设计》(第三版),张跃平耿祥义编著,清华大学出版社,2009年 课程目的、内容与要求:
JSP开发技术是一门理论性和实践性都很强的计算机专业的专业课程,从软件开发项目实践的角度深入的讲解了web应用程序的基本知识和使用技巧,以小步迭代的方式引领学生一步一步的开发,从而让学生在实践开发的过程中学习和掌握JSP开发Web程序中的各个技术要点。
本课程的主要内容有:JSP的基本语法,Servlet的应用,JSP的内置对象,JDBC,JSTL,EL表达式,会话追踪-session,Filter和Listener,MVC架构等。
本课程要求学生掌握JSP的基本语法和Servlet的使用,掌握JSP的内置对象的使用,学会通过JDBC连接数据库,理解session的机制,会使用Filter和Listener解决开发过程中的特定问题,了解Model和Model2的开发模式,熟悉MVC架构。
撰写人:青软实训
审核人:
第三篇:android 开发心得
即 使你的应用程序是快速且响应灵敏的,但一些设计仍然会给用户造成问题——与其它应用程序或对话框未事先计划的交互,意外的数据丢失,意料之外的阻塞等等。避免这些问题,有助于理解应用程序运行的上下文和系统的交互过程,而这些又正影响着你的应用程序。简而言之,你应该竭尽全力去开发一个与系统和其它应用程 序流畅交互的应用程序。
一 个常见的流畅问题是,一个应用程序的后台处理——例如,一个 Service或者
BroadcastReceiver——弹出一个对话框来响应一些事件。这可能看起来没啥大碍,尤其是你在模拟器上单独地构建和测试你 的应用程序的时候。然而,当你的应用程序运行在真机上时,有可能你的应用程序在没有获得用户焦点时后台处理显示了一个对话框。因此,可能会出现在活跃的应 用程序后方显示了你的应用程序的对话框,或者从当前应用程序夺取焦点显示了一个对话框,而不管当前用户正在做什么(例如,正在打电话)。那种行为,对应用 程序或用户来说,就不应该出现。
为了避免这些问题,你的应用程序应该使用合适的系统资源来通知用户——Notification类。使用Notification,你的应用程序可以在状态栏显示一个 icon来通知用户已经发生的事情,而不是夺取焦点和打断用户。
另 一个流畅问题的例子是未能正确实现Activity的 onPause()和其它生命周期方法而造成意外丢失了状态或用户数据。又或者,如果你的应用程序想暴露数据给其它应用程序使用,你应该通过 ContentProvider来暴露,而不是(举例)通过一个可读的原始文件或数据库来实现。
这 些例子的共同点是它们都应该与系统和其它应用程序协作好。Android系统设计时,就把应用程序看作是一堆松散耦合的组件,而不是一堆黑盒代码。作为开 发者来说,允许我们把整个系统看作是更大的组件集合。这有益于我们可以与其它应用程序进行清晰无缝的集成,因此,作为回报,我们应该更好的设计我们的代 码。
下面将讨论常见的流畅问题以及如何避免它们:
一 定要记住Android是一个移动平台。可以显而易见地说,其它Activity(例如,“Incoming Phone Call”应用程序)可能会在任何时候弹出来遮盖你的Activity,记住这个事实很重要。因为这个过程将触发 onSaveInstanceState()和 onPause()方法,并可能导致你的应用程序
被杀死。
如 果用户在你的应用程序中正在编辑数据时,其它 Activity出现了,这时,你的应用程序被杀死时可能丢失那些数据。当然了,除非你事先保存了正在进行的工作。“Android方式”是这样做的:能 接收和编辑用户输入的 Android应用程序应该重写 onSaveInstanceState()方法,并以恰当的方式保存它们的状态。当用户重新访问应用程序时,她能得到她的数据。进行这种处理方式最经典的例子是 mail应用程序。如果用户正在输入 email,这时其它 Activity启动了,mail应用程序应该把正在编辑的email以草稿的方式保存起来。
如果你不想穿着内衣在大街上溜达的话,你的数据也不应该这样。尽管可能存在暴露应用程序的某种形式给其它应用程序,但这通常不是最好的主意。暴露原始数据,要求其它应用程序能够理解你的数据的格式;如果你变更了格式,那么,你将破坏那些没有进行同步更新的应用程序。
“Android 方式”是创建一个 ContentProvider,以一种清晰的、深思熟虑的和可维护的API方式暴露你的数据给其它应用程序。使用 ContentProvider,就好像是插入Java接口来分离和组装两片高耦合的代码。这意味着你可以修改数据的内部格式,而不用修改由 ContentProvider暴露的接口,这样,也不会影响其它应用程序。
如果用户正在运行一个应用程序(例如,Phone程序),断定对用户操作的目的才是安全的。这也就是为什么必须避免创建Activity,而是直接在当前的 Activity中响应用户的输入。那 就是说,不要在 BroadcastReceiver或在后台运行的 Service中调用 callActivity()。这么做会中断当前运行的应用程序,并导致用户恼怒。也许更糟糕的是,你的 Activity可能成为“按键强盗”,窃取了用户要提供给前一个 Activity的输入。视乎你的应用程序所做的事情,这可能是个坏消息。
不 选择在后台直接创建 Activity UI,取而代之的是,应该使用NotificationManager来设置 Notification。它们会出现在状态栏,并且用户可以在他空闲的时候点击它们,来查看你的应用程序向他显示了什么。(注意,如果你的 Activity已经在前台了,以上将不适用:这时,对于用户的输入,用户期望的是看到下一个 Activity来响应)
如果你的应用程序需要执行一些昂贵或耗时的计算的话,你应该尽可能地将它挪到线程里。这将阻止向用户显示可怕的“Application Not Responding”对话框,如果不这样做,最终的结果会导致你的应用程序完全终止。
一 般情况下,Activity中的所有代码,包括它的 View,都运行在相同的线程里。在这个线程里,还需要处理UI事件。例如,当用户按下一个按键,一个 key-down事件就会添加到 Activity的主线程队列里。事件处理系统需要很快让这个事件出列并得到处理;如果没有,系统数秒后会认为应用程序已经挂起并为用户提供杀死应用程序 的机会。
如果有耗时的代码,内联在Activity上运行也就是运行在事件处理线程里,这在很大程度上阻塞了事件处理。这会延迟输入处理,并导致ANR对话框。为了避免这个,把你的计算移到线程里。
任 何值得使用的应用程序都可能有几个不同的屏幕。当设计UI屏幕时,请一定要使用多个Activity对象实例。依赖于你的开发背景,你可能理解 Activity类似于 Java Applet,它是你应用程序的入口点。然而,那并不精确:Applet子类是一个 Java Applet的单一入口点,而一个Activity应该看作是你的应用程序多个潜在入口点之一。你的“main”Activity和其它之间的唯一不同点 是“main”Activity正巧是在AndroidManifest.xml文件中唯一对“android.intent.action.MAIN”动作感兴趣的Activity。因此,当设计你的应用程序的时候,把你的应用程序看作是Activity对象的 集合。从长远来看,这会使得你的代码更加方便维护。
当 谈到 UI观感时,巧妙地交融非常重要。用户在使用与自己期望相反的 UI的应用程序时,会产生不愉快的感觉。当设计你的 UI时,你应该尽量避免太多自己的主题。相反的,使用同一个主题。你可以重写或扩展你需要的主题部分,但至少在与其它应用程序相同的 UI基础上开始。
不 同的 Android设备可能支持不同的屏幕分辨率。甚至一些可以自己变更分辨率,例如,切换到风景模式。确保你的布局和图片能足够灵活地在不同的设备屏幕上正 常显示。幸运的是,这很容易做到。简而言之,你需要做的是为主要分辨率提供不同版本的作品,然后为不同的尺寸设计你的布局。(例如,避免使用硬编码位置而 使用相对布局。)如果那样做的话,系统会处理剩下的部分,而且你的应用程序在任何设备上都看起来很棒。
Android设备会有多种网络连接选项。所有的都提供数据访问,但之间肯定有更快的。其中,速度最慢的是GPRS,GSM网络的非 3G数据服务。即使具备 3G能力的设备在非3G的网络上也会花费很多的时间,所以,网络很慢仍然是一个长期存在的事实。
这 就是为什么你应该按照最小化的网络访问和带宽来编写你的代码。你不能假设网络是快速的,所以,你应该总是计划它是慢的。如果你的用户碰巧在一个快速的网络 上,那很好——他们的用户体验会提升。你要避免相反的情形:在不同的地点和不同时间,应用程序有时可用,有时慢得令人抓狂,这样的程序可能不会受欢迎。
还 有一个潜在的地方是,如果你正在使用模拟器,那么你很容易受它迷糊,因为模拟器使用电脑的网络连接。这比手机网络快很多,所以,你需要修改模拟器设定来模 拟较低的网络速度。你可以在 Eclipse中做到这点,在启动选项的模拟器设置页里设置或者在启动模拟器时通过命令行选项设置。
Android 可以支持多种外观形状。也就是说,一些Android设备拥有全“QWERTY”键盘,而其它可能会有40键、12键或其它键盘设置。同样的,一些设备可 能有触摸屏,但一些也会没有。当创建你的应用程序的时候,记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。
如 果移动设备经常插在墙上,那么,它也就不是很“移动”。移动设备是电池供电的,如果我们能让每次充电的电池使用得更持久一些,那么每个人都会更加开心—— 尤其是用户。
其中两大耗电硬件是处理器和无线;这也就是我们为什么要写尽可能少做工作、尽可能少去使用网络的应用程序的重要原因。
如 何让你的应用程序最小化的占用处理器,归根结底还是要写高效代码。为了减少无线的电量消耗,确保对错误条件进行正确的处理,并只获取你要的东西。例如,如 果某一个网络操作失败了,不要不断地进行重试。如果失败了一次,有可能是用户不受欢迎,因此,如果你再以正确的方式操作,有可能还会失败;所有你做的都是 在浪费电池。
用户是相当聪明的:如果你的程序高耗电,他们是一定会发现的。到那个时点,你唯一可以确定的是,你的程序将很快被卸载掉。
第四篇:Android编程基础教学大纲
《Android编程初级》教学大纲
2013-11-21修订版
一、课程教学目标:(一)知识目标
本课程要求学生熟练使用LinearLayout线性布局及RelativeLayout相对布局完成UI界面设计,灵活运用Android程序设计中的四大组件Activity,Service,BroadcastReceiver,ContentProvider;并深刻理解连接四大组件的信使---Intent用法。
在本门课程设计了多个完整应用案例,分解为18个业务模块,涵盖67项知识点以及由这些知识点衍生或组合的题目,通过本门课程的学生,让同学们能够熟练应用Android开发工具包,为后续课程提供坚实的基础。(二)能力目标
通过AndroidAPI加强学生对android编程的运用能力;通过完整项目案例UI框架搭建,提高学生对android四大组件及常用控件的理解能力;对于复杂问题要借助ppt动态效果加以分析讲解,帮助学生理解和记忆。
在学习过程中转换角色让学生真正的成为学习主人,通过启发、点拨、设疑及解惑,激发学生的思维能力和创造能力;通过辅助大量的实战练习,锻炼学生的思考能力和动手的熟练程度。通过学习小组讨论、交流的过程,能真正做到提高学生的沟通表达能力。(三)素质目标
本门课程主要培养学生学习Android核心SDK编程能力,建立有效的学习方法,强化练习,促使学生燃烧激情,锐意进取,最终达成学生内在、外在与行为素养价值的全面提升。
采取立体监督学生记笔记,加注释,写总结,引导学生提高自学能力,对新技术有学习、钻研精神,有较强的实践能力。具有认真负责、严谨细致的工作态度和工作作风,具备良好的团队协作和沟通交流能力。具备分析综合决策能力,资源合理整合能力,环境适应能力,可持续发展能力,知识迁移能力。
二、课程教学内容(体现核心知识点及重难点):
(一)教学内容:
第1单元 Android开课介绍(4课时)
1.1 介绍3G专业与前景
1.2 Android基本概念
1.2.1 Android简介
1.2.2 Android系统构架 1.3 1.4 讲解Android手机系统功能常用设置 Android常用软件介绍
第2单元 Android开发环境的搭建(4课时)
2.1讲解如何搭建Android开发环境
2.1.1 安装JDK和配置Java开发环境 2.1.2 安装Eclipse 2.1.3 SDK和ADT的安装和配置 2.2 Android项目目录结构分析
2.3 Android模拟器的使用以及常用adb命令 2.4开发第一个项目HelloWord
第3单元 Activity入门指南(4课时)[重点] 3.1 理解Activity
3.2 Activity的生命周期
3.2.1 讲解Activity生命周期的七个方法
3.2.2 讲解Activity生命周期的四种状态 3.3 消息模式Toast.makeText用法 3.4 Android Logcat使用
第4单元 用户界面View(一)(6课时)4.1 常用Layout介绍
4.1.1 LinearLayout线性布局用法 [重点]
4.1.2 RelativeLayout相对布局用法 [重点]
4.1.3 FrameLayout帧布局用法 4.1.4 TableLayout表格布局用法 4.1.5 AbsoluteLayout相对布局用法 4.2 多种布局Layout混合使用
第5单元 用户界面View(二)(4课时)5.1 常用组件介绍 5.1.1 Button按钮 5.1.2 TextView文本框 5.1.3 EditText可编辑文本框 5.1.4 ImageView图片框 5.1.5 ImageButton图片按钮
5.1.6 CheckBox复选框 5.1.7 RadioGroup单选框
5.2完成基于android计算器应用(作业)第6单元 用户界面View(三)(4课时)6.1 Spinner下拉列表
6.2 AutoCompleteTextView自动完成文本框
6.3 DatePicker日期选择控件 6.4 TimePicker时间选择控件 第7单元 用户界面View(四)(4课时)7.1 进度条组件介绍(2课时)7.1.1 ProgressBar进度条 7.1.2 SeekBar滑动条 7.1.3 RatingBar评分条
7.2 ListView列表(常见Adapter)(2课时)[重点]
第8单元 用户界面View(五)(4课时)
8.1 ExpandableListView 手风琴效果ListView(2课时)
8.2 TextSwitcher 文本切换器以及ImageSwitcher图片切换器(2课时)第9单元 用户界面View(六)(4课时)
9.1 Gallery画廊组件(1课时)9.2 GridView网格组件(1课时)9.3 SlidingDrawer 抽屉组件(2课时)第10单元 用户界面View(七)
10.1 菜单 Menu 10.1.1 选项菜单 Option Menu 10.1.2 上下文菜单 ContextMenu 10.1.3 子菜单 SubMenu 10.2 对话框 Dialog 10.2.1 Dialog介绍
10.2.2 AlertDialog的基本使用
10.2.3 自定义对话框CustomDialog
第11单元 用户界面View(八)
(4学时)
(4学时)
11.1 PopWindow 实现类似菜单效果
11.1 PopWindow 实现类似对话框效果
第12单元 标签页的实现 TabHost TabActivity(2课时)12.1 TabHost组件应用
12.1.1 Tabhost的子组件TabWidget和FrameLayout 12.1.2 Tabhost将标签放到界面底部 12.1.3 Tabhost的onTabChanged事件
12.1.4 标签页内容是另一个Activity时的用法 12.2 通过TabActivity实现标签页
第13单元 Android组件之间的信使Intent(4课时)[重点]
13.1 Intent对象及其属性
13.1.1 Intent的ComponentName属性
13.1.2 Intent的Action属性 13.1.3 Intent的Data属性 13.1.4 Intent的Category属性 13.1.5 Intent的Extras属性
13.2 系统标准Activity Action的应用
13.2.1 和打电话相关的标准Activity Action应用 13.2.2 访问浏览器和地图 13.3 Intent的实现策略 13.3.1 显式Intent 13.3.2 隐式Intent 第14单元 Android Service组件(4课时)[重点] 14.1 Service的概念 14.2 Service的生命周期 14.3 Service的用法
14.3.1 启动和停止Service 14.3.2 绑定一个已经存在的Service
第15单元 AIDL和远程Service调用(4课时)15.1 AIDL服务介绍
15.2 编写AIDL远程服务
15.3 AIDL和远程Service调用
第16单元 BroadcastReceiver的使用(4课时)[重点] 16.1 BroadcastReceiver简介
16.2 BroadcastReceiver接收系统自带的广播
16.3 自定义广播
第17单元 Android Notification的使用入门(2课时)17.1 通知Notification
通知管理器NotificationManager 第18单元Android数据存储之SharedPreferences 和File(4课时)
重点]
17.2 [
18.1 数据存储之SharedPreferences 18.1.1使用 SharedPreferences保存数据 18.1.2使用 SharedPreferences读取数据 18.2 PreferenceActivity实现设置界面
18.3 数据存储之File 18.3.1 文件的保存与读取
18.3.2 文件的操作模式
18.3.3文件在SDCard的读写
第19单元 总复习(4课时)每周六阶段 复习2课时(6课时)
三、课程考核要求:
【目的要求】 【第一单元】
1.了解Android系统构架 【第二单元】
2.掌握如何搭建Android开发环境 3.掌握Android项目目录结构 4.掌握模拟器的使用以及常用adb命令 【第三单元】
5.掌握Activity的生命周期 6.掌握消息模式Toast.makeText用法 7.掌握Android Logcat使用 【第四单元】
8.掌握LinearLayout线性布局 9.灵活运用RelativeLayout相对布局 10.掌握TableLayout表格布局
11.掌握FrameLayout相对布局 12.了解AbsoluteLayout相对布局 【第五单元】
13.掌握Button按钮的用法 14.掌握TextView文本框用法 15.掌握EditText文本编辑框用法 16.掌握ImageView图片框用法 17.掌握ImageButton图片按钮的用法 18.掌握CheckBox复选框组件用法 19.了解RadioGroup单选框组件用法 【第六单元】
20.掌握Spinner下拉列表用法
21.掌握AutoCompleteTextView自动完成文本框用法 22.了解DatePicker日期选择控件用法 23.了解TimePicker时间选择控件用法 【第七单元】
24.掌握ProgressBar进度条用法 25.掌握SeekBar拖动条用法 26.了解RatingBar评分条用法 27.灵活运用ListView列表 【第八单元】
28.掌握ExpandableListView 手风琴效果ListView
29.掌握TextSwitcher 文本切换器以及ImageSwitcher图片切换器
【第九单元】
30.掌握Gallery画廊组件用法 31.灵活运用GridView网格组件 32.掌握SlidingDrawer抽屉组件 【第十单元】
33.掌握选项菜单Option Menu用法 34.掌握上下文菜单Context Menu用法 35.了解子菜单SubMenu用法
36.掌握AlertDialog对话框的基本用法 37.了解自定义对话框CustomDialog 【第十一单元】
38.掌握PopWindow 实现类似菜单效果
39.掌握PopWindow 实现类似对话框效果
【第十二单元】
40.了解tabhost组件结构 41.掌握tabhost的初始化过程 42.掌握如何使用tabhost标签切换事件 43.掌握如何将标签置于组件底部 44.掌握如何添加Activity到TabHost中 45.掌握如何通过TabActivity来实现标签页 【第十三单元】
46.掌握Intent对象及属性 47.掌握通过Action调用系统应用 48.掌握显式Intent用法 49.了解隐式Intent用法 【第十四单元】
50.了解Service的概念 51.掌握Service的生命周期 52.掌握如何启动和停止Service 53.掌握如何绑定一个已经存在的Service 【第十五单元】:
54.了解AIDL远程服务应用场景
55.掌握如何编写简单的AIDL远程服务
56.灵活运用AIDL远程Service方法调用
【第十六单元】:
57.掌握BroadcastReceiver组件 58.掌握如何接收系统自带的广播 59.灵活运用自定义广播 【第十七单元】:
60.掌握通知Notification用法
61.掌握通知管理器NotificationManager用法
【第十八单元】:
62.掌握如何使用SharedPreferences保存数据 63.掌握如何使用SharedPreferences读取数据
64.掌握如何通过PreferenceActivity实现设置界面 65.掌握文件的保存与读取 66.了解文件的操作模式 67.掌握SDcard文件的读写
四、推荐教材与主要参考科目:
1.《Android/Ophone开发完全讲义》李宁中国水利水电出版社 2.《Android应用开发详解》 郭宏志 电子工业出版社
第五篇:Android日常开发总结的技术经验60条
Android日常开发总结的技术经验60条
存在多个不同的dbhelper实例情况下,sqlitedatabase对象必然存在不同的实例,多线程同时写入数据,轮流写入数据时会不定时的报db is locked,引起崩溃,不管是操作同张表还是异表。读和写可以同时并发,轮流无规律的交替执行。同时写入数据时解决方案是用并发的每个线程都用事务,db则不会lock,按次整体写入。
作者:佚名来源:安卓开发精选|2017-01-10 19:06 收藏 分享
1.全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效。
2.数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架LiteOrm库,超级清晰且重心可以放在业务上不用关心数据库细节。
3.全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中.4.不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意单一职责原则,一个类专心做好一件事情更为清晰。
5.如果数据没有必要加载,数据请务必延迟初始化,谨记为用户节省内存,总不会有坏处。
6.异常抛出,在合适的位置处理或者集中处理,不要搞的到处是catch,混乱且性能低,尽量不要在循环体中捕获异常,以提升性能。7.地址引用链长时(3个以上指向)小心内存泄漏,和警惕堆栈地址指向,典型的易发事件是:数据更新了,ListView视图却没有刷新,这时Adapter很可能指向并的并不是你更新的数据容器地址(一般为List)。
8.信息同步:不管是数据库还是网网络操作,新插入的数据注意返回ID(如果没有赋予唯一ID),否则相当于没有同步。
9.多线程操作数据库时,db关闭了会报错,也很可能出现互锁的问题,推荐使用事务,推荐使用自动化的LiteOrm库操作。
10.做之前先考虑那些可以公用,资源,layout,类,做一个结构、架构分析以加快开发,提升代码可复用度。
11.有序队列操作add、delete操作时注意保持排序,否则你会比较难堪喔。12.数据库删除数据时,要注意级联操作避免出现永远删不掉的脏数据喔。13.关于形参实参:调用函数时参数为基本类型传的是值,即传值;参数为对象传递的是引用,即传址。
14.listview在数据未满一屏时,setSelection函数不起作用;ListView批量操作时各子项和视图正确对应,可见即所选。控制Activity的代码量,保持主要逻辑清晰。其他类遵守SRP(单一职能),ISP(接口隔离)原则。
16.arraylist执行remove时注意移除int和Integer的区别。你懂得。
17.Log请打上Tag,调试打印一定要做标记,能定位打印位置,否则尴尬是:不知道是哪里在打印。
18.码块/常量/资源可以集中公用的一定共用,即使共用逻辑稍复杂一点也会值得,修改起来很轻松,修改一种,到处有效。
19.setSelection不起作用,尝试smoothScrollToPosition。ListView的LastVisiblePosition(最后一个可见子项)会随着getView方法执行位置不同变动而变。
20.与Activity通讯使用Handler更方便;如果你的框架回调链变长,考虑监听者模式简化回调。
21.监听者模式不方便使用时,推荐EventBus框架库,使用时间总线,没接触过的同学可以自行脑补一下哦。
22.Handler在子线程线程使用Looper.prepare,或者new的时候给构造函数传入MainLooper来确保在主线程run。23.timepicker 点击确定后需要clearFocus才能获取手动输入的时间。
24.构造函数里面极度不推荐启动异步线程,会埋下隐患。比如:异步线程调用了本例的示例,就会悲剧等着崩溃吧。
25.千万不要理所当然的以为一个对象不会为空,充分的做好容错处理;另外注意null也可以插入ArrayList等容器中。
26.ExpandableListView的子列表不能点击(禁用)要把Adapter的isChildSelectable方法返回true。
27.UI显示注意内容过长的情形要提前使用ScrollView否则在小手机上尴尬你懂得。
28.注意按钮的感应范围不小于9mm否则不易点击;输入框注意光标的位置更易用户输入。
29.服务器和客户端尽量统一唯一标识(有可能是ID),否则多少会有歧义和问题。30.注释,尽量去写足够的注释,去描述一下思路,达到看了可以明白某一块代码的效果。
31.完整型数据一定要用Sqlite的Transaction,大数据一定要用。粗略测试插入100个数据有20倍的提速,插入1000个数据就有100多倍的提速。
32.避免String=”null”的情况出现String = null,=””都可以。避免出现title=”无主题”这样的数据提交到数据库浪费空间。
33.存在多个不同的dbhelper实例情况下,sqlitedatabase对象必然存在不同的实例,多线程同时写入数据,轮流写入数据时会不定时的报db is locked,引起崩溃,不管是操作同张表还是异表。读和写可以同时并发,轮流无规律的交替执行。同时写入数据时解决方案是用并发的每个线程都用事务,db则不会lock,按次整体写入。
34.建议整个应用维护一个dbhelper实例,只要db没有关闭,全局就只有一个db实例,多线程并发写入db不会lock,严格交替进行写入:123123123。。(123代表不同线程,轮流插入一个记录),读和写均不会锁住db,读写交替并没有规律,执行次数和程度看cpu分配给哪个线程的时间片长。
35.一个任务使用事务嵌套N个事务,N个事务中有一个失败,这个任务整体失败,全部成功后,数据才写入,具有安全性,整体性。并且事务写入大批量数据的效率经实际测试成百上千倍的高于一般的单个写入。数据库大量数据、多线程操作建议使用LiteOrm数据库框架,更稳定简单。36.经常需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。37.Long a;判断a有没有赋值,if(a == 0)在a没有赋值情况下会报错。应该if(a == null),Integer、Floag等也一样,原因你懂,只是提醒你要小心喔。
38.编码遇到读写、出入等逻辑要双向考虑,文件导入导出,字符字节相互转换都要两边转码。
39.一个 int 值与一个 Integer 对象(能包含 int 值的最小对象)的大小比率约为 1:4(32位和64位机器有不同)。额外的开销源于 JVM 用于描述 Java 对象的元数据也就是 Integer,(Long、Double等也是)。
40.对象由元数据和数据组成。元数据包括类(指向类的指针,描述了类的类型),标记(描述了对象状态,如散列码、形状等),锁(对象同步信息)。数组对象还包括大小的元数据。
41.一个在 32 位 Java 运行时中使用 1GB Java 堆的 Java 应用程序在迁移到 64 位 Java 运行时之后,通常需要使用 1.7GB 的 Java 堆。
42.Hash 集合的访问性能比任何 List 的性能都要高,但每条目的成本也要更高。由于访问性能方面的原因,如果您正在创建大集合(例如,用于实现缓存),那么最好使用基于 Hash 的集合,而不必考虑额外的开销。
43.对于并不那么注重访问性能的较小集合而言,List 则是合理的选择。ArrayList 和 LinkedList 集合的性能大体相同,但其内存占用完全不同:ArrayList 的每条目大小要比 LinkedList 小得多,但它不是准确设置大小的。List 要使用的正确实现是 ArrayList 还是 LinkedList 取决于 List 长度的可预测性。如果长度未知,那么正确的选择可能是 LinkedList,因为集合包含的空白空间更少。如果大小已知或可预知或比较小,那么 ArrayList 的内存开销会更低一些。43.选择正确的集合类型使你能够在集合性能与内存占用之间达到合理的平衡。除此之外,你可以通过正确调整集合大小来最大化填充率、最小化未得到利用的空间,从而最大限度地减少内存占用。
44.充分利用封装(提供接口类来控制访问数据)和委托(helper对象来实施任务)两种理念。45.延迟分配 Hashtable:如果 Hashtable 为空是经常发生的普遍现象,那么仅在存在需要存储的数据时分配 Hashtable 应该是一种合理的做法。将 Hashtable 分配为准确的大小:虽然会有默认大小,但建议使用更为准确的初始大小。46.EditText在setText时不要忘记是否需要setSelection。在大多数情况下是需要设置的。
47.XML两种情况要注意:1 属性名字时候有重复;2 注意文本是否包含非法字符,注意使用CDATA包裹。
48.当逻辑没有明显问题时考虑对象属性、函数参数、网络传输参数是否全部了解,是否设置正确。
49.当出现编译或者运行时错误,别人那没问题时,考虑你的编译环境和环境版本是否有问题。
50.由于String类的immutable性质,当String变量需要经常变换其值时,应该考虑使用StringBuilder提升性能,多线程使用StringBuffer操作string提高程序效率。
51.java 栈的优势是比堆速度快,可共享,主要存放临时变量、参数等,堆的优势是可动态分配内存大小。
52.只要是用new()来新建对象的,都会在堆中创建,而且其数据是单独存值的,即使与栈中的数据(值)相同,也不会与栈中的数据共享。
53.基本数据类型定义的变量称自动变量,存的是‘字面值’,存在于栈中,可共享(存在即不新建)。
54.多个RandomAccessFile对象指向同一个文件,可使用多个线程一起写入无需再自己加锁,经试验结论:三个线程分别写入100万次数据,使用锁约12秒,不使用约8.5秒。100个线程分别写入1万次数据使用锁耗时约4.2秒,不使用锁耗时约3秒。
55.XmlPullParser解析慎用nextText()方法,xml比较复杂,含有空标签、重复名字标签时容易出现异常问题;TEXT中使用getText()方法代替START_TAG中使用nextText()方法;START_TAG,TEXT,END_TAG三个事件配合使用。注意每个xml节点之间(不管是开始节点还是结束节点)都会出现TEXT事件。
56.改变逻辑的时候考虑全部用到这项功能的地方,分散的地方多了,容易大意。57.当系统原生组件出现问题时,查看错误栈信息,自己写一个该组件的子类,并在合适的地方将出错方法复写一下,加上try catch保证不崩溃掉。不要扰乱了该系统控件的正常逻辑。
58.输入控件注意对空格、换行等符号的控制;输入框里内容注意和左右控件的空间,防止误点击。
59.注意函数参数里的++或者–操作。是++c 还是 c++,区别很大。
60.各种地方、永远的不要小看null指针问题,甚至有些场合宁可错杀(try catch),不可放过。
【编辑推荐】
1.Android快速实现微信支付
2.Android嵌套滑动机制NestedScrolling 3.我的Android开发实战经验总结
4.用Jenkins自动化构建Android和iOS应用 5.Android轻松实现RecyclerView悬浮条