20172321 2017-2018-2 《程序设计与数据结构》第11周学习总结
20172321 2017-2018-2 《程序设计与数据结构》第11周学习总结
教材学习内容总结
第23章
- 1.Java是开发Android应用程序的默认语言,但Android应用程序不同于Java应用程序在Java虚拟机上运行。
- Android 是运行于 Linux kernel之上,但并不是GNU/Linux。
第24章
- Project窗口中有两个主要的节点,app和Gradle Scripts。
- app:
- manifests(包含AndroidManifest.xml文件,描述应用程序)
- java(包含所有的Java应用程序和测试类)
- res(包含资源文件)
- Gradle Scripts节点包含了Gradle构建脚本,供Android Studio构建你的项目
- Android Studio中所看不到的,是一个名为R的通用的Java类,可以在项目的app/build/generated/source目录下找到它。
- 每次你添加、修改或删除资源的时候,都会重新生成R;R的作用是让你能够引用代码中的一个资源。
第25章
-
活动的生命周期
-
Activity 类中定义了七个回调方法,覆盖了活动生命周期的每一个环节。
- onCreate():
它会在活动第一次被创建的时候调用。应该在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件等。 - onStart():
这个方法在活动由不可见变为可见的时候调用。 - onResume():
这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。 - onPause():
这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。 - onStop():
这个方法在活动完全不可见的时候调用。它和 onPause() 方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么 onPause() 方法会得到执行,而 onStop() 方法并不会执行。 - onDestroy():
这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。 - onRestart():
这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
- onCreate():
-
以上七个方法中除了onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。
- 完整生存期:
活动在 onCreate() 方法和 onDestroy() 方法之间所经历的,就是完整生存期。一般情况下,一个活动会在 onCreate() 方法中完成各种初始化操作,而在 onDestroy() 方法中完成释放内存的操作。 - 可见生存期:
活动在 onStart() 方法和 onStop() 方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在 onStart() 方法中对资源进行加载,而在 onStop() 方法中对资源进行释放,从而保证处于停止状态的活动不会占用过多内存。 - 前台生存期:
活动在 onResume() 方法和 onPause() 方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也这个状态下的活动。
- 完整生存期:
第26章
- Android Studio UI
- Toast是Android中用来显示显示信息的一种机制,它是一个小的弹出对话框,用于显示一条消息作为给用户的反馈,它不会替代当前的活动,并且只是占据了一条消息的空间,而且Toast显示的时间有限,过一定的时间就会自动消失。
- 通知通知是出现在状态栏里的一条消息,通知是持久的,并且保持显示,直到关闭通知或是关闭设备。
教材学习中的问题和解决过程
-
问题1:老老实实,一步一步的按照应该的步骤做,模拟器启动时一直显示信息“Waiting for HOME ('android.process.acore') to be launched...”。没有截图,我来描述一下:模拟器启动时,等很久(5分钟以上)也启动不了,一直提示“Waiting for HOME ('android.process.acore') to be launched...”信息。
-
解决方法:删除当前的模拟器,重新创建一个模拟器。简单粗暴,异常有效,不管遇到了什么不可战胜的问题,我都可以建议你重新弄一个。
-
问题2:想把书上的一些代码弄进去试试,刚开始不太会,以为和idea差不多,复制了一些进去,结果后来发现一个项目的代码要全,当时有点迷,
不知道怎么夏姬霸导弄进去了,然后要么R红,要么到处红。
-
解决方法:继续简单粗暴,放弃这个项目,新建一个,在优秀同学的指引下,成功导入了。
-
问题3:Android Studio新建项目推送到码云上,按照某篇指导博客进行操作,第4步就有点问题,我的没有变红???不过没关系,万一我还有机会呢,继续,在完成了漫长的26个步骤之后,每一步都一模一样,有点高兴,最后一步,他succeeful,我fatal。。。
- 解决方案:算了,学长说可以不用git。
代码调试中的问题和解决过程
- 好像没有唉。
代码托管
- 都说了没有。
上周考试错题总结
-
错题1:The following method should return true if the int parameter is even and either positive or 0, and false otherwise. Which set of code should you use to replace ... so that the method works appropriately?
public boolean question3(int x)- A.if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 1);
- B.if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 1);
- C.if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 2);
- D.if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 2);
- E.return(x = = 0);
-
解析:该方法将递归调用从x减去2,直到x == 0或x < 0。如果x = 0,那么x - 2 * i == 0(对于某个int值i)或x == 2 * i,所以x必须是偶数。否则,递归会在x < 0时结束,也就是说原来的x是奇数或小于0。
-
错题2:Which of the following is considered an Abstract Data Type?
- A.array
- B.reference variable
- C.any of the primitive types (e.g., int, double, char)
- D.vector
- E.all of the above
-
解析:抽象数据类型包括数据结构的操作和访问数据结构的方法。在这些列表中,只有向量结合了这两个。数组是一个数据结构,但没有方法(例如插入方法或搜索方法),而引用变量和基本类型是数据,而不是数据结构。
-
错题3: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外部进行操作,但是其他面向对象的特性是不需要的。
-
错题4:inux Bash中,可以使用chomd 777 pdds命令修改文件pdds的权限,并使得其拥有者、拥有者所在的组和其他用户都拥有全部权限。
- A true
- B false
-
解析:应该是chmod 777 pdds,不是 chomd 777 pdds
-
问题5:Linux Bash中,使用tar命令把文件dky打包成dky.tar的命令是tar –c dky.tar dky 。
- A true
- B false
-
解析:正确的命令应该是tar –cf dky.tar dky
-
问题6:Linux Bash中,使用grep查找当前src目录下所有包含main函数的文件,并要求显示出现行号的命令是grep –n main /src
- A true
- B false
-
解析:正确的命令应该是grep –rn main /src
-
问题7:在Linux Bash中,为所有人对file1.txt文件添加写入权限的命令是chmod o+w filel.txt 或者 chmod 666 filel.txt.
- A true
- B false
-
解析:正确的命令为:chmod a+w filel.txt 或者 chmod 666 file,注意 a+w 和 o+w 的区别。
结对及互评
感觉写评论里比较省事
点评过的同学博客和代码
- 本周结对学习情况
- 21
- 结对学习内容
- 讨论了Android崩了怎么搞、Android一直崩要不要重来一次
其他(感悟、思考等,可选)
-
本周是学习Android的第一周,感觉要是自己能整出一个app来就非常开心了,但我也发现在操作Android Studio的过程中很容易愤怒,但是怎么说呢,
“为了小事发脾气
回头想想又何必
别人生气我不气
气出病来无人替”
还是好好学习好了。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 189/189 | 1/1 | 18/18 | |
第二周 | 250/439 | 1/2 | 21/39 | |
第三周 | 437/876 | 2/4 | 25/64 | |
第四周 | 459/1335 | 2/6 | 21/85 | |
第五周 | 547/1882 | 1/7 | 20/115 | |
第六周 | 592/2474 | 2/9 | 25/150 | |
第七周 | 782/3256 | 1/10 | 29/179 | |
第八周 | 830/4086 | 3/13 | 40/219 | |
第九周 | 1300/5386 | 2/15 | 40/259 | |
第九周 | 1000/6386 | 1/16 | 26/285 | |
第十周 | 800/7186 | 2/18 | 21/306 | |
第十一周 | 0/7186 | 2/20 | 30/339 |