远程实习-第二周学习报告
远程实习-第二周学习报告
本次为远程实习的第二周学习总结报告,以下是本周的任务目标:
- 熟悉使用Android四大组件和Fragment
- 熟悉常用View控件,support包新控件
1. Android四大组件
Activity
使用场景
作为实现应用功能的主要组件,主要职责是完成于用户的交互,进行UI相关的逻辑处理,并将处理操作分发到其他组件起到一个类似中枢的作用。
生命周期
启动方式
目前启动一个Activity有两种方式,一种是在Manifest中指定Launcher,在我们点击应用图标时启动,另一种就是在应用中调用startActivity启动,而使用startActivity还可以使用显式,即指定某一具体Activity,或者隐式,只设定需要哪种类型的Activity。
BroadcastRecevier
使用场景
广播监听器没有界面,并且监听到后只有短短几秒的生命周期,所以广播监听器更多的是起到一个监听事件发生,然后将处理转交给其他组件的作用。
使用步骤
注册广播事件
注册方式有两种,一种是静态注册,就是在AndroidManifest.xml文件中定义,注册的广播接收器必须要继承BroadcastReceiver;另一种是动态注册,是在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类。两种方式都需要IntentFIlter。
发送广播事件
通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。
接收广播事件
当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。onReceive中代码的执行时间不要超过5s,否则Android会弹出超时dialog。
Service
使用场景
Service通常总是称之为“后台服务”,其中“后台”一词是相对于前台而言的,具体是指其本身的运行并不依赖于用户可视的UI界面,因此,从实际业务需求上来理解,Service的适用场景应该具备以下条件:
1.并不依赖于用户可视的UI界面。(当然也有少部分需要前台的)
2.具有较长时间的运行特性。
启动方式
Services有两种启动形式:
Started:其他组件调用startService()方法启动一个Service。一旦启动,Service将一直运行在后台(run in the background indefinitely)即便启动Service的组件已被destroy。通常,一个被start的Service会在后台执行单独的操作,也并不给启动它的组件返回结果。比如说,一个start的Service执行在后台下载或上传一个文件的操作,完成之后,Service应自己停止。
Bound:其他组件调用bindService()方法绑定一个Service。通过绑定方式启动的Service是一个client-server结构,该Service可以与绑定它的组件进行交互。一个bound service仅在有组件与其绑定时才会运行(A bound service runs only as long as another application component is bound to it),多个组件可与一个service绑定,service不再与任何组件绑定时,该service会被destroy。
ContentProvider
使用场景
为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。Android已经为常见的一些数据提供了默认的ContentProvider。
ContentProvider使用表的形式来组织数据
无论数据的来源是什么,ContentProvider都会认为是一种表,然后把数据组织成表格
- ContentProvider提供的方法
query:查询
insert:插入
update:更新
delete:删除
getType:得到数据类型
onCreate:创建数据时调用的回调函数
- 每个ContentProvider都有一个公共的URI
这个URI用于表示这个ContentProvider所提供的数据。Android所提供的ContentProvider都存放在android.provider包当中
Fragment
使用场景
Fragment刚出现的时候是为了解决平板以及各种不同尺寸屏幕的适配问题,在手机中就显示一个List Fragment然后点击再显示content Fragment ,而平板屏幕比较大就可以左边是一个List Fragment右边是一个Content Fragment这样。但是其实现在后续更新了很多组件都可以直接依赖于Fragment比如使用ViewPager+Fragment+TabLayout实现导航栏效果等等。
生命周期
Fragment和Activity的生命周期很像
使用方式
有两种,可以使用静态的方式,在xml布局文件中使用标签,设置class属性后就可以指定使用的Fragment类。
也可以使用动态加载的方式,在Activity中获取FragmentManager然后就可以为布局(通常是FrameLayout)进行Fragment的add,replace,hide等操作了,比起静态方式更加灵活。
2. 常用的View以及support控件
soupport包
Android随着版本的迭代更新,不断推出了体验更会更美观也更稳定的组件,但是这些组件在低版本的系统是无法使用的,所以为了向下兼容就在support中实现了这些新组件的替代,然后统一使用support包,就可以解决这问题了。
- Android Support v4
这个包是为了照顾1.6及更高版本而设计的,这个包是使用最广泛的,eclipse新建工程时,都默认带有了。
- Android Support v7
这个包是为了考虑照顾2.1及以上版本而设计的,但不包含更低,故如果不考虑1.6,我们可以采用再加上这个包,另外注意,v7是要依赖v4这个包的,即,两个得同时被包含。
- Android Support v13
这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。
关于support的组件一般都是各种常用的部件,比如侧滑实现的DrawerLayout,Fragment等等,在这就不介绍了。
Material Desgin
在5.0后,Android还提出的Meterial Design的新概念,同时也推出了新的design包,提供了新的组件。
因为时间关系只是简单了学习了一点控件
NavigtaionView
NavgtionView与DrawableLayout结合实现侧滑菜单
使用简单了很多,可以在xml中为NavigationView可以直接为head简介部分设置layout,下面的选项用menu.xml格式来写:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/favorite" android:icon="@mipmap/ic_launcher" android:title="收藏"/> <item android:id="@+id/wallet" android:icon="@mipmap/ic_launcher" android:title="钱包"/> <item android:id="@+id/photo" android:icon="@mipmap/ic_launcher" android:title="相册"/> <item android:id="@+id/file" android:icon="@mipmap/ic_launcher" android:title="文件"/>
</menu>
真是一目了然,非常方便。
本来我在想网易云可能也用了这个,但是发现网易云的item里还有小红点以及switch等额外控件,可能还是用自己的控件吧。
远程实习-第二周学习报告相关推荐
- 远程实习第一周学习总结
远程实习第一周学习总结 本周的主要学习内容内容如下: 1.掌握AndroidStudio,项目结构以及SDK 2.掌握Git以及项目忽略表 3.熟悉Android 设计规范:Material Desi ...
- 10+31=100小组项目第二周总结报告
10+31=100小组项目第二周总结报告 项目进展 • 在图书馆及网上查找了用java语言编程设计项目的相关书籍资料,基本了解了一个项目由设计到实现的基本过程. Java面向对象程序设计(第2版)北京 ...
- Linux第二周学习笔记(7)
Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...
- 机电传动控制第二周学习笔记
机电传动控制第二周学习笔记 经过第二周的学习,我了解了电机的发展历史.从奥斯特发现电生磁的现象,到法拉第电磁回转实验,再到后来的电机一步步的发展至今.它充满了巧合,但是它又必然一步步向更完美走去.电机 ...
- Linux第二周学习笔记(11)
Linux第二周学习笔记(11) 2.17 隐藏权限lsattr_chattr chattr命令:是设置吟唱隐藏权限的命令,更改Linux文件系统上的文件属性. 参数说明: A:表示文件或目录的ati ...
- LINUX内核分析第二周学习总结——操作系统是如何工作的
LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- 20155303 2016-2017-2 《Java程序设计》第二周学习总结
20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...
- 20155313 2016-2017-2 《Java程序设计》第二周学习总结
20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...
- Linux第二周学习笔记(5)
Linux第二周学习笔记(5) 2.11.CP命令 cp(copy简写)命令:用来将一个或多个源文件或者目录复制到指定的目的文件或目录. cp –r:复制目录 -i:安全选项 cp命令:拷贝/etc/ ...
最新文章
- kali Linux 屏幕旋转,MSF基础命令新手指南
- C++ 拷贝构造函数应用场景
- WebLogic自带的Web Service测试工具
- CUDA Stream流并发性
- 科技领袖技术大亨们被指是现代强盗:不仅赚钱还想垄断
- 爬虫requests高阶篇详细教程
- 飞机订票系统的html模板,飞机订票系统程序设计
- html中高与行高的区别,CSS中line-height与height有什么区别
- python装饰器-简易版
- ceb怎么转换成word_win8.1系统将ceb文件格式转换成word的方法
- 城建坐标与经纬度转换工具
- Paper:人工智能可解释性的背景/方法/伦理/教育/可解释性的基本原理/Interpretability和Explainability区别之《可解释人工智能的教育视角:基于伦理和素养的思考》解读笔记
- Excel锁定单元格不能修改,怎么办?
- TensorFlow北大公开课学习笔记-8 复现vgg16并实现图片识别
- 五年从程序员到架构师的职业规划
- JavaScript 学习总结(全)
- 《大明王朝1566》观后感
- 处理打包后的.air文件不能打开的情况
- MyBatis-Plus学习总结
- 【嵌入式基础小知识】Nand Flash VS Nor Flash