20172303 2017-2018-2 《程序设计与数据结构》第11周学习总结

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来记录日志消息。
  • 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:该文件是描述应用基础特性的文件,定义了每个组件。
  • 问题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:\androidstudio\androidstudio\sdk
  • 问题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时,不禁有种想要热泪盈眶的感觉

参考资料

posted @ 2018-06-03 21:04  框框框  阅读(354)  评论(2编辑  收藏  举报