20172319 《程序设计与数据结构》第11周学习总结

20172319 2018.05.09-05.21

《Java程序设计教程》第11周学习总结

目录

  • 教材学习内容总结
  • 代码调试中的问题和解决过程
  • 代码托管
  • 上周考试错题总结
  • 结对及互评
  • 其他(感悟、思考等,可选)
  • 学习进度条
  • 参考资料

教材学习内容总结

第23章 Android简介:

  • 23.1 概览:
    1.Android操作系统是一种多用户的Linux系统,每个应用程序作为单独的Linux进程中的一个不同的用户运行。2.java是开发Android应用程序的默认语言,所有Android应用程序在Dalvik虚拟机上运行(Android4.4之前),在Android5.0之后,Android的源代码使用ART编译成机器代码和应用程序。3.APK表示应用程序包,是一个基本的zip文件;apk文件是部署APP的方式,该文件的任一版本可在Android设备上安装和运行。

  • 23.2 应用程序开发简介:
    4种Android应用程序组件:
    活动(Activity):包含用户交互组件的一个窗口
    服务(Service):在后台长时间运行的操作
    广播接收者(Broadcast receiver):一个监听器,负责对系统或应用程序声明做出响应
    内容提供者(Content provider):管理要和其他应用程序分享的一组数据的一个组件。
    意图(intent): 一条消息,发送给系统或另一个应用程序,以要求执行一个动作,可以做很多不同的事,当通常用于启动一个活动、服务或发送一条广播。
    清单(manifest): 描述该应用程序,以XML文件的形式给出,包含的内容有:
    1.运行该应用程序所需的最小API Level;
    2.应用程序的名称;(将会显示在设备上)
    3.当用户在其设备主屏幕上触碰该应用程序图标时,将会打开的第一个活动(窗口);
    4.是否允许从其他应用程序调用你的应用程序组件;(促进代码复用)
    5.对于在目标设备上安装的应用程序,用户必须保证一组什么样的许可。

  • 23.3 Android版本:
    20172319 《程序设计与数据结构》第11周学习总结_第1张图片
    20172319 《程序设计与数据结构》第11周学习总结_第2张图片

第24章 初识Android:

开发、调试和测试应用程序所需:Android软件开发工具包(SDK),集成开发环境(IDE)——加快开发速率,当前可以IDE:Android Studio;Android Developer Tools(ADT)Bundle。

  • 24.1、2、3 Android Studio的下载安装及配置:
    实验四博客里有安装教程,此处不再复述。

  • 24.4 应用程序结构:
    项目组件的树视图:
    20172319 《程序设计与数据结构》第11周学习总结_第3张图片
    Project窗口包括两个主要的节点:app和Gradle Scripts。app节点包含了应用程序中所有的组件。Gradle Scripts节点包含Gradle构建脚本,供Android Studio构建你的项目。
    App节点有如下的3个节点:
    manifest : 包含一个AndroidManifest.xml文件,描述了应用程序;
    java :包含了所有Java应用程序和测试类;
    res : 包含了资源文件。
    res 目录下的其他目录:
    drawable : 包含了用于各种屏幕分辨率的图像;
    layout : 包含布局文件;
    menu : 包含了菜单文件;
    mipmap : 包含了用于各种屏幕分辨率的App图标;
    values : 包含了字符串及其他值.
    R类
    在Android Studio中看不见的,一个名为R的通用的java类,可以在项目的app/build/generated/source目录下找到它
    其包含了嵌套的类,该类反过来包含你所有的资源的资源ID。
    每次添加、修改或删除资源,会重新生成R。

  • 24.4.1 Android清单:
    清单文件是一个XML文档,使用mainfest作为其根元素。mainfest元素的package属性为应用程序指定一个唯一的标识符。Android工具使用这一信息来生成相应的java类,以便写java资源的时候使用。
    在manifest之下,是一个application元素,它描述了应用程序。包含一个或多个activity元素,描述APP中的活动。应用程序通常有一个主活动,充当应用程序的入口点。
    activity元素的name属性,指定了一个活动类,它可以是一个完全限定名称或只是类名。

  • 24.4.2 apk文件:
    在Android Studio运行一个应用程序时,一个apk文件将会自动构建和签名。
    这个文件将会自动命名为app-debug.apk,且存储在项目目录下的app/build/outputs/apk目录。
    Android Studio会将该位置告知模拟器和目标设备,以便能找到并执行apk文件。
    apk文件结构:
    20172319 《程序设计与数据结构》第11周学习总结_第4张图片
    里面有清单文件、资源文集。AndroidManifest.xml文件也进行了编译,所以无法用文本编译器去读取它。
    classes.dex文件包含了java类到Dalvik可执行文件的二进制翻译,即使应用程序有多个java文件,也只有一个classes.dex文件。

  • 24.5 调试应用程序:
    设置断点,通过Run>Debug app来调试应用程序。
    后面的基本内容在实验四的过程中已实现,此处不再重复说明。

第25章 活动:

  • 活动:包含用户界面组件的一个窗口,用户可以和这些用户界面组件交互。启动一个活动,意味着显示一个窗口。
  • 主活动:应用程序所创建的第一个窗口,充当应用程序的入口点;要让一个活动成为一个主活动,其intent-filter元素必须包含MAIN的action和LAUNCHER的category。
  • Activity生命周期方法:
    20172319 《程序设计与数据结构》第11周学习总结_第5张图片
    20172319 《程序设计与数据结构》第11周学习总结_第6张图片
  • 修改应用程序图标:
  • 使用Android资源:在Android stutio打开应用程序清单,输入“@Android:”,后面跟着Ctrl+space组合键,从而填入属性值,便会显示出资源的列表。eg:
    20172319 《程序设计与数据结构》第11周学习总结_第7张图片
  • 启动另一个活动:
    Android应用程序的主活动,是当用户从主屏幕选择APP图标时,通过系统自身而启动。而在拥有多个活动的应用程序中,很有可能需要启动另一活动,这时便可以通过调用startActivity方法直接做到。如startActivity(intent),其中intent是Android.content.Intent类的一个实例。
  • 活动相关的意图:
    显式意图:通过传递给意图一个活动类而构造的意图:
    也可以创作一个隐式意图,在这种情况下,我们没有指定一个意图类。相反,我们给Intent类的构造方法传递一个动作,让系统来决定启动哪一活动。如果有多个活动可以处理,系统会让用户来进行选择。
    20172319 《程序设计与数据结构》第11周学习总结_第8张图片
    并非所有的意图都可用于启动活动。确保一个Intent能启动一个活动,需在将其传递给startActivity之前,调用其resolveActivity方法;不能解析为一个动作的意图,如果传递给了startActivity,将会抛出一个异常。
if(intent.resolveActivity(getPackageManager())!=null){
    startActivity(intent);
}

第26章 UI组件:

  • 概览:.Android SDK提供了叫作微件(widget)的众多简单的和复杂的组件。微件有很多例子,比如按钮、文本字段、进度条等。此外,还需选择一个布局来放置UI组件。微件和布局,都在android.view.View里实现。
  • 使用Android Studio UI工具:
    打开一个活动的布局文件,并将UI组件拖曳到布局上即可。活动的布局文件位于应用程序的res/layout目录中。
    工具窗口划分为3个主要的区域。左边是微件,分为Layouts、Widgets、Text Fields和Containers等不同种类。每个微件和布局都有一组属性,这些属性派生自View类或者添加到实现类。
    使用UI工具所做的事,都会反应到布局文件中去,以XML元素的形式体现出来。
  • Toast:
    Toast是一个小的弹出对话框,用于显示一条消息作为给用户的反馈。Toast并不会代替当前的活动,并且只是占据了一条消息那么大的空间。
    android.widget.Toast类是创建Toast的模板。要创建一个Toast,调用它唯一的构造方法,接受Context作为一个参数:
    public Toast(android.content.Context context)
    Toast还提供两个静态的makeTes方法来创建Toast的实例。该方法的两种重载形式的签名如下:
    public static Toast makeTest(android.content.Context context,int resourceId,int duration)
    public static Toast makeTest(android.content.Context context,java.lang.CharSequence text,int duration)
    这两种重载形式都需传入一个Context(即可能的激活活动)作为第一个参数。此外,两种重载形式都接受一个字符串(可能来自一个strings.xml文件或一个String对象),还接受显示Toast的时间长度(有效值为Toast中的静态final变量LENGTH_LONGLENGTH_SHORT),要显示一个Toast,调用其show方法,该方法不接受参数。
    默认情况下,一个Toast会显示在靠近激活活动的底部。可在调用show方法前调用setGravity方法修改位置。
  • 通知:
    通知是出现在状态栏里的一条消息,和Toast不同,通知是持久的,并且将保持显示,直到关闭它或者是关闭设备。
    通知是android.app.Notification的实例,创建通知最简便的方法:使用Builder的嵌套类,通过传递一个Context来实例化该类,然后调用build方法创建一个Notification:
    Notification n = new Notification.Builder(context).build();
    发布通知:

    取消通知:

返回目录


代码调试中的问题和解决过程

  • 问题1:Error while Installing APKs
  • 解决:好像是因为机型的原因导致软件没安装上,重新创建新设备?~内存怕不是要爆炸。。。~ 为了避免这种愚蠢的法子:
    20172319 《程序设计与数据结构》第11周学习总结_第9张图片
    20172319 《程序设计与数据结构》第11周学习总结_第10张图片
    File->Settings->Build,Execuion,Deployment->Instant Run
    然后把Enable Instant Run to...那一项的勾去掉就好了

返回目录


代码托管

返回目录


上周考试错题总结

  • 错题1:
    20172319 《程序设计与数据结构》第11周学习总结_第11张图片
  • 理解:抽象数据类型封装数据结构和处理数据结构的方法,以便保留信息隐藏。因此,所有ADT都使用了信息隐藏,因此不能直接从ADT外部操作数据结构,而不需要其他面向对象的特性。。
  • 错题2:
    20172319 《程序设计与数据结构》第11周学习总结_第12张图片
  • 理解:数组的大小是静态的,链表可动态变化。
  • 错题3:
    20172319 《程序设计与数据结构》第11周学习总结_第13张图片
  • 理解:一个简单的线性列表是定向的,从它的起始节点到它的结束节点。图和图表都没有一个开始节点,但是树有根。因此,一个简单的线性列表就是一个退化树的例子,它有一个分支因子,每个节点只有一个继承,从根开始,到单叶结束(结束节点)。
  • 错题4:
    20172319 《程序设计与数据结构》第11周学习总结_第14张图片
  • 理解:队列和堆栈都是抽象的数据类型,它们的实现方法是无关紧要的,定义它们的是操作(入队列、退队列、push、pop)。因此,这两个ADT都可以使用数组或链表来实现。
  • 错题5:
    20172319 《程序设计与数据结构》第11周学习总结_第15张图片

  • 错题6
    20172319 《程序设计与数据结构》第11周学习总结_第16张图片
  • 理解:tar -cf dky.tar dky。

  • 错题7
    20172319 《程序设计与数据结构》第11周学习总结_第17张图片
  • 理解:grep -rn main / src
  • 错题8
    20172319 《程序设计与数据结构》第11周学习总结_第18张图片
  • 理解:上下左右顺序依次是kjhl

  • 错题9
    20172319 《程序设计与数据结构》第11周学习总结_第19张图片
  • 理解:chmod a+w filel.txt 或者 chmod 666 file,注意 a+w 和 o+w 的区别。

返回目录


结对及互评

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172316赵乾宸
    • 博客中值得学习的或存在问题:
      1.markdown格式有误
      2.问题的解决较为详细
      3.尽管本次博客简单,但该有的还是得有,不能偷懒。
    • 20172329王文彬
    • 博客中值得学习的或存在问题:
      1.问题解决详细,但貌似与实验四博客重复
      2.错题别直接翻译

返回目录


其他(感悟、思考等,可选)

  • 对于Android,很多东西都是新的,给我感觉像刚开始学java的时候,虽然有点难上手,但却比java又多了一丝乐趣,所学的东西也离生活更进了一步;成功并不是一蹴而就的,总不能刚接触就能开发游戏了哈 ~那还要腾讯干嘛~ ,慢慢来吧,相信随着学习的深入会逐渐掌握关于Android的知识,最终开发出好玩的东西。

返回目录


学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 202/202 1/2 15/15 积极主动敲代码
第二周 490/692 1/3 18/33 善于思考
第三周 581/1273 1/4 15/48 善于完善
第四周 1857/3130 1/6 33/81
第五周 655/3787 1/7 22/103
第六周 531/4318 1/8 18/121
第七周 810/5128 1/9 23/ 144
第八周 698/5826 1/13 21/ 165
第九周 756/6582 1/15 54/ 219
第十周 1289/7871 1/16 56/ 275
第十一周 0/7871 1/19 75/ 350

返回目录


参考资料

《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导

返回目录

你可能感兴趣的:(20172319 《程序设计与数据结构》第11周学习总结)