教材学习内容总结
Android简介
- 概览:android操作系统是一种多用户的Linux系统,每个应用程序作为单独的Linux进程中的一个不同的用户而运行。Android使用Java语言但是不在Java虚拟机上运行。如果想了解更多的内容,可以看看Android的构建过程
- 应用程序开发简介:
4种Android应用程序组件
(1) 活动(Activity):包含用户交互组件的一个窗口。
(2) 服务(Service):在后台长时间运行的操作。
(3) 广播接收者(Broadcast receiver):一个监听器,负责对系统或应用程序声明做出响应。
(4) 内容提供者(Content provider):管理要和其他应用程序分享的一组数据的一个组件。
Android编程中另一重要概念是意图和清单(以xml文件的形式给出)
-
Android版本:都是以好吃的命的名
-
在线资源(略)
-
应该使用哪个版本的Java(略)
初始Android
- 下载和安装Andriod Studio
- 创建应用程序
如果as找不到JDK的正确位置,单击File>Project Structure>SDK Location,然后浏览以找到JDK的位置。 - 在模拟器上运行应用程序
- 应用程序结构:project窗口有两个主要的节点,app和Gradle Scripts。app节点包含了应用程序中所有的组件。Gradle Scripts节点包含Gradle构建脚本,以供构建Android项目。
app的三个节点分别是AndroidManifest.xml文件(AndroidMainfest.xml的清单文件用来描述应用程序,是必不可缺的。),Java应用程序和测试文件,res资源文件。
R文件
- 调试应用程序:最简单的是日志方法,任何异常的抛出包括栈轨迹都会显示在LogCat中;设置断点,在任意一行上单击,选择run>toggle line breakpoint,即可在代码中添加一行断点,然后择run>debug app
- 删除支持的库
活动
- 活动的含义:活动是包含了用户界面组件的一个窗口,用户可以和这些用户界面组件交互,启动一个活动,往往意味着要显示一个窗口。一个典型的Android应用程序,都是从启动一个活动开始的,也就是说启动一个活动就意味着显示一个窗口。
- 修改应用程序图标
- 启动另一个活动:用户从主屏幕选择APP图标时,祝活动通过系统自身而启动,再拥有多个活动的应用程序中,很有可能需要启动另一活动,这时便可以通过调用startActivity方法直接做到。如
startActivity(intent)
,其中intent是Android.content.Intent类的一个实例。
@Override
public boolean onTouch(View arg0, MotionEvent event) {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("message", "Message from First Screen");
startActivity(intent);
return true;
}
UI组件
- 使用Android Stutio UI工具:使用UI工具所做的事,都会反应到布局文件中去,以XML元素的形式体现出来。
- 使用基本组件,OnCreate方法是一个生命周期方法,当创建应用程序的时候会调用它,onCreateOptionsMenu方法初始化了活动的选项菜单的内容。要让菜单显示,他必须返回为true。
- Toast:Toast是一个小的弹出对话框,用于显示一条消息作为给用户的反馈,是暂时的。通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来
makeshow()方法需要传入三个参数。
第一个参数是Context,也就是Toast要求的上下文,由于活动本身就是一个Context对象,因此直接传入FirstActivity.this即可
第二个参数是Toast显示的文本内容
第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT和Toast.LENGTH_LONG
- 通知:通知是出现在状态栏里的一条消息,和Toast不同,通知是持久的,并且将保持显示,直到关闭它或者是关闭设备。创建通知
NSNotification *notification = [NSNotificationnotificationWithName:@"refresh" object:niluserInfo:dictplist];
可以这样理解:当你想在A activity中启动另一个B activity,那么你可以选择两种情况[立即启动或延时启动]:
1.通过intent配置需要启动的B activity,然后调用startActivity()方法,让他立即执行启动操作,跳转过去
2.另一种情况是,你虽然想启动另一个B activity,可是你并不想马上跳转到Bactivity页面,你想静等5分钟之后再跳转到Bactivity,那么你可以通过PendingIntent来实现,PendingIntent可以包装第1步中的intent,然后通过AlarmManager这个定时器,定制5分钟之后启PendingIntent,实现这种延时操作
可以看看这个博客写了很多关于PendingIntent的解释PendingIntent详解
教材学习中的问题和解决过程
-
问题1:当我直接将包复制粘贴到文件中后,Android里有文件,但是不能运行,右小角没有又可以运行的绿色提示
-
问题1解决方案:不能把整个安装包复制粘贴,正确的方式是现在Android中new一个project,然后打开路径中的文件包,先导入AndroidManifest.xml文件,然后是src文件中的mainactivity文件,最后是res布局文件。
-
问题2:menu文件报红,R文件报红
-
问题2解决方案:menu文件主要是因为没有导入,但是如果想自己新建的话要注意menu布局文件要在menu文件夹地下创建才行,应该先在res文件夹右键,然后选择New>Android resource directory,出现界面后在Resource type下拉栏选择menu。接着在menu文件夹下右键,New>Menu resource file之后输入文件名就可以了 R文件报红的话主要是因为刚刚导入的xml文件导致的,大多都是图片的命名,一定要注意的图片的格式,不要将图片的名字改为xx.png,实际上还是没有改变图片的格式。解决办法是
build-rebuild project不行的话再试试clean project
代码调试中的问题和解决过程
-
问题1:不能git到码云上,在张昊然同学发的第12步就出现了请求被拒绝的error,我到底做错了什么,idea和as都喜欢拒绝我
此处错误提示
androidstudio can’t start git.exe
- 解决方案1:
这种问题可能是有两种:git.exe路径设置错误,或者没有安装git
然而我安装了的,于是我换了一个博客 Push rejected: Push to origin/master was rejected打开Git Bash,然后进入相应的目录,然后敲git命令
git pull origin master --allow-unrelated-histories
你就可以将本地仓库中的推送到github中,使用如下的git命令
git push -u origin master
- 问题2:
error running:please select Andriod SDK
- 问题2解决方法:说是由于Android Studio异常关闭,使得某些配置文件损坏,因此需要在线更新SDK才能恢复被损坏的文件。解决办法如下:
首先依次选择主菜单“File”——“Settings”,然后依次展开“Appearance & Behavior”——“System Settings”——“Android SDK”,在右边的设置界面编辑SDK的路径。如下图所示,单击SDK目录输入框右边的“Edit”链接(红框标注):
单击“Edit”链接之后打开SDK的设置界面后目录保持不动,点击next》next后等待Android Studio下载成功后回到Android Studio的主界面,等待重编完成,即可正常执行Run app的操作了。
代码托管
上周考试错题总结
-
下列哪一种被认为是抽象数据类型?
A . array
B . reference variable
C . any of the primitive types (e.g., int, double, char)
D . vector
E . all of the above
抽象数据类型包括数据结构和操作和访问数据结构的方法。在这些列表中,只有向量将这两者结合起来。该数组是一个数据结构,但没有方法(例如插入方法或搜索方法),而引用变量和基本类型是数据,而不是数据结构。 -
抽象数据类型具有以下面向对象的特性?
A . information hiding
B . inheritance
C . polymorphism
D . message passing
E . all of the above
抽象数据类型封装数据结构和操作数据结构的方法,以便保留信息隐藏。 -
一个简单的线性表
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
一个简单的线性列表从它的开始节点到它的结束节点,图和有向图都没有起始节点但是树有 -
数组是一种列表抽象数据类型
A . true
B . false
数组是一种数据结构,可以用来存储值列表,但是数组没有已经实现的操作来执行列表操作,如添加到末尾或删除给定值 -
所有抽象数据类型都定义为Java类
A . true
B . false -
Linux Bash中,可以使用chomd 777 pdds命令修改文件pdds的权限,并使得其拥有者、拥有者所在的组和其他用户都拥有全部权限。
A . true
B . false
chmod 777 pdds,不是 chomd 777 pdds………..????????好吧 -
Linux Bash中,使用rm –r /dky/D命令强制删除/dky目录下所有D开头的文件。
A . true
B . false
rm –f /dky/D -
Linux Bash中,查找五天之内src目录中删除的文件的命令是find /src/ -ctime -5。
A . true
B . false
Linux find命令 -
Linux Bash中,使用tar命令把文件dky打包成dky.tar的命令是tar –c dky.tar dky 。
A . true
B . false
tar –cf dky.tar dky -
在Ubuntu中,使用vim编辑器时,想要移动光标,除方向键之外,还可以依次使用hjkl键进行上下左右的移动。
A . true
B . false
上下左右顺序依次是kjhl
结对及互评
写在评论里
点评过的同学博客和代码
- 本周结对学习情况
- 21我们两个的Android都崩了好巧好巧,最后都好了好巧好巧
其他(感悟、思考等,可选)
是的
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/2 | 20/20 | |
第二周 | 329/500 | 2/3 | 18/38 | |
第三周 | 619/1000 | 2/5 | 22/60 | |
第四周 | 817/1734 | 2/7 | 38/98 | |
第五周 | 674/2408 | 1/9 | 30/128 | |
第六周 | 1136/2870 | 2/10 | 30/158 | |
第七周 | 1000/3791 | 1/11 | 32/190 | |
第八周 | 2662/6453 | 2/13 | 48/238 | |
第九周 | 782/7573 | 2/15 | 48/238 | |
第十周 | 201/7773 | 1/17 | 48/238 | |
第十一周 | idea崩了....代码量回到之前的一半了�哭 | 2/18 | 48/238 |