20172303 2017-2018-2 《程序设计与数据结构》第11周学习总结
教材学习内容总结
第23章 Android简介
1.组件
Android应用程序组件共有四种:
- 活动(Activity):用户交互的窗口。
- 服务(Service):在后台长时间运行的操作。
- 广播接受者(Broadcast receiver):一个监听器。
- 内容提供者(Content provider):管理要和其他程序分享数据的一个组件。
2.意图
- 意图(intent)是Android程序中的一条消息,用于要求程序执行某一动作。
3.清单
- 每个应用程序都必须包含一个XML形式的清单(manifest),其中应该包含以下几项:
- 程序所需的最小的API Level
- 程序的名称
- 用户在触碰应用程序图标时打开的第一个活动窗口
- 是否允许其他应用程序调用该程序的组件
- 用户需保证的许可
第24章 初识Android
一、应用程序的调试
- 1.日志
- 使用日志消息是最简单的调试应用程序的方法,Android中使用
android.util.Log
来记录日志消息。
- 使用日志消息是最简单的调试应用程序的方法,Android中使用
- 2.设置断点
- 在某一行单击,选择
Run→Toggle Line Breakpoint
即可设置断点。或在某一行代码的侧边栏单机也可设置断点。
- 使用
Run→Debug
来调试
- 在某一行单击,选择
二、应用程序结构
- Project窗口中主要有两个节点————app和Gradle Scripts。
- Gradle Scripts节点包含了Gradle构件脚本。
- app节点包含了manifests、java和res三个节点。
第25章 活动
1.活动的生命周期
onCreate()
:这个方法会在活动第一次被创建的时候被调用。这个方法用于对活动的初始化,如加载布局,绑定事件等。onStart()
:这个方法在活动由不可见到可见时被调用。onResume()
:这个方法在活动准备好和用户进行交互的时候被调用。onPause()
:这个方法在系统准备去启动或恢复另一个活动时被调用。(我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,否则会影响到新的栈顶活动的使用)onStop()
:这个方法在活动完全不可见的时候调用。它和onPause()方法
的主要区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法
会得到执行,而onStop()方法
并不会执行。onDestroy()
:这个方法在活动被销毁之前调用。之后的活动状态变为销毁状态。onRestart()
:这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
2.修改应用程序图标
- 在
res/drawable
中保存一个jepg或png文件 - 编辑manifest中的android:icon属性,使用
@drawable/图像文件名称
来引用图像。
第26章 UI组件
- Android提供了许多的UI组件,你能按需构建应用的用户交互界面
- TextView:文本标签
- EditText:文本框,是TextView的一个子类,有副文本编辑能力
- Button:按钮,可以按压、点击,由用户完成一个动作
- ImageButton:图片按钮
- CheckBox:复选框,可以作为用户使用的一个开关。当有一系列可供选择的选项时,可使用该控件
- ToggleButton:带有一个“灯泡亮暗”效果的开关按钮
- Spinner:下拉列表,允许用户在多个选项中选择一个
- TimePicker:时间选择器,能让用户输入时间,有12小时和24小时模式
- DatePicker:日期选择器,能让用户输入日期
- ProgressBar:进度条,为用户提供某项工作的进度,比如后台正在做的事情
教材学习中的问题和解决过程
- 问题1:R类究竟是什么?
- 问题1解决方案:刚开始翻书的时候不认真,后来在书上P254发现了解释:R类是AS中看不到的一个通用类,可以在
app/build/generated/source
目录下找到它。每当添加、修改或者删除资源时,都会重新生成R。R的作用是让你可以在代码中引用一个资源。 - 问题2:在看书的时候,对活动程序的结构还是很模糊
- 问题2解决方案:在自己真正建了一个程序之后就比较清楚了。
- build:该目录包含了自动生成的文件,这些文件包括了编译设置项、R类等
- libs:该目录包含了开发Android应用所需要的库文件
- src:该目录存放了应用的源代码.java文件。默认情况下,它包含了MainActivity.java文件,这个源代码j有一部分是执行了你点击应用图标时启动应用所需要功能
- res:该目录存放了所有的资源文件
- drawable:该目录存放了项目的drawable对象和一些图片资源
- layout:该目录存放了各个界面的布局文件
- menu:该目录存放了应用中设计的菜单对象
- mipmap:该目录存放了应用的主要图片资源
- values:该目录存放了字符串、颜色等定义的资源集合
- AndroidManifest.xml:该文件是描述应用基础特性的文件,定义了每个组件。
- res:该目录存放了所有的资源文件
- 问题3:对于程序的生命活动周期,有没有什么具体易懂的简单例子?
- 问题3解决方法:找到一篇博客android 活动的生命周期
,里面举的例子就非常好,除此之外,博客里还把整个活动周期分成三个部分:- 完整生存期:onCreate()方法和onDestroy()之间,总共调用了6个方法。
- 可见生存期:活动在onStart()方法和onStop()之间,总共4个方法,再加上重新运行的onRestart()方法,总共5个。
- 前台生存期:活动在onResume()方法和onPause()方法,总共2个方法。
代码调试中的问题和解决过程
- 问题1:刚刚下载好AS的时候,提示:
- 问题1解决方法:以管理员的身份打开cmd,在里面输入
netsh winsock reset
后重启即可。 - 问题2:提示错误
Error:Failed to find target with hash string 'android-27' in: E:androidstudioandroidstudiosdk
- 问题2解决方法:产生该错误的原因是所需的编译版本缺失,解决方法是打开
build.gradle
文件,将里面相应的版本降低下来即可。
- 问题3:提示错误
Error:(11) error: attribute 'android:roundIcon' not found.
- 问题3解决方法:删除AndroidManifest.xml里的
android:roundIcon="@mipmap/ic_launcher_roun
即可 - 问题4:在使用git push的时候提示失败,按教程用git pull还是提示失败
- 问题4解决方法:失败的原因是码云上的东西和本地的东西有差别,所以不管是pull还push都会有问题。解决的方法是重新建一个项目,在建项目的时候取消勾选“使用Readme文件初始化这个项目”,
之后就没有什么问题了。
代码托管
上周考试错题总结(正确为绿色,错误为红色)
- 错题1:Abstract Data Types have which of the following object-oriented features?
- A .information hiding
- B .inheritance
- C .polymorphism
- D .message passing
- E .all of the above
- 原因及理解情况:抽象类数据类型既封装了数据结构又封装了操作数据结构的方法,所以可以隐藏信息。因此,所有ADT都利用信息隐藏功能,以便数据结构不能直接从ADT外部操作,但不需要其他面向对象的功能。
- 错题2:A simple linear list
- A .is an example of a degenerate tree
- B .is an example of a degenerate graph
- C .is an example of a degenerate digraph
- D .cannot be represented as a degenerate tree, graph or digraph
- E .none of the above
- 原因及理解情况:看题的时候没有注意degenerate,觉得图和树都是非线性结构就选了D,但其实退化了的树结构只有一个分支,就相当于一个简单的线性结构。
- 问题3:在Ubuntu中,使用vim编辑器时,想要移动光标,除方向键之外,还可以依次使用hjkl键进行上下左右的移动。
- A .true
- B .false
- 原因及理解情况:上下左右顺序依次是kjhl,当时做题的时候只关注了是不是这几个字母,没想到还要一一对应,太坑了_(:з」∠)_
- 问题4:在Linux Bash中,为所有人对file1.txt文件添加写入权限的命令是chmod o+w filel.txt 或者 chmod 666 filel.txt.
- A .true
- B .false
- 原因及理解情况:chmod a+w filel.txt是给所有人加上可写权限,包括所有者,所属组,和其他人。chmod o+w filel.txt是只给其他人加上可写权限。
结对及互评
点评模板:
- 博客中值得学习的或问题:
- 优点:从本周的博客中可以很明显地看出整个学习历程
- 问题:教材学习内容列的有些杂乱,可以采用分点的方式来写。
- 代码中值得学习的或问题:
- 本周的代码基本都是直接拷进去的,大家的代码都比较类似。基本没有问题。
点评过的同学博客和代码
- 本周结对学习情况
- 20172322
- 结对学习内容
- 张昊然同学教会了我如何往AS里放代码,在下AS的初期帮我解决了一些错误。
其他(感悟、思考等,可选)
- 没想到在学期的期末还会接触到这么难啃的一块骨头,刚开始学的时候真的是懵的,而且走的很艰难,幸亏这周三做了那几个实验,使我对这部分的知识更加清楚了。不过每一次打开虚拟机还是很有成就感的,现在我也是能做简单APP的人了!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 120/120 | 1/1 | 9/9 | |
第二周 | 246/366 | 1/2 | 9/18 | |
第三周 | 785/1121 | 2/4 | 15/33 | |
第四周 | 615/1736 | 1/5 | 20/53 | |
第五周 | 1409/2645 | 1/6 | 24/77 | |
第六周 | 561/3206 | 1/7 | 20/97 | 再次搞清了一些自己有点含糊不清的概念 |
第七周 | 63/3269 | 1/8 | 15/112 | |
第八周 | 2476/5745 | 3/11 | 90/201 | |
第九周 | 824/6595 | 1/12 | 20/221 | |
第十周 | 919/7514 | 2/14 | 20/241 | |
第十一周 | 0/7514 | 3/17 | 40/281 |
- 计划学习时间:20小时
- 实际学习时间:40小时
- 改进情况:本周很大一部分时间花在了安装AS上,这个东西真的...当最后真的把它装好,所有的程序都显示绿色的OK时,不禁有种想要热泪盈眶的感觉