远程实习-第二周学习报告

本次为远程实习的第二周学习总结报告,以下是本周的任务目标:

  • 熟悉使用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. 远程实习第一周学习总结

    远程实习第一周学习总结 本周的主要学习内容内容如下: 1.掌握AndroidStudio,项目结构以及SDK 2.掌握Git以及项目忽略表 3.熟悉Android 设计规范:Material Desi ...

  2. 10+31=100小组项目第二周总结报告

    10+31=100小组项目第二周总结报告 项目进展 • 在图书馆及网上查找了用java语言编程设计项目的相关书籍资料,基本了解了一个项目由设计到实现的基本过程. Java面向对象程序设计(第2版)北京 ...

  3. Linux第二周学习笔记(7)

    Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...

  4. 机电传动控制第二周学习笔记

    机电传动控制第二周学习笔记 经过第二周的学习,我了解了电机的发展历史.从奥斯特发现电生磁的现象,到法拉第电磁回转实验,再到后来的电机一步步的发展至今.它充满了巧合,但是它又必然一步步向更完美走去.电机 ...

  5. Linux第二周学习笔记(11)

    Linux第二周学习笔记(11) 2.17 隐藏权限lsattr_chattr chattr命令:是设置吟唱隐藏权限的命令,更改Linux文件系统上的文件属性. 参数说明: A:表示文件或目录的ati ...

  6. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  7. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  8. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  9. Linux第二周学习笔记(5)

    Linux第二周学习笔记(5) 2.11.CP命令 cp(copy简写)命令:用来将一个或多个源文件或者目录复制到指定的目的文件或目录. cp –r:复制目录 -i:安全选项 cp命令:拷贝/etc/ ...

最新文章

  1. kali Linux 屏幕旋转,MSF基础命令新手指南
  2. C++ 拷贝构造函数应用场景
  3. WebLogic自带的Web Service测试工具
  4. CUDA Stream流并发性
  5. 科技领袖技术大亨们被指是现代强盗:不仅赚钱还想垄断
  6. 爬虫requests高阶篇详细教程
  7. 飞机订票系统的html模板,飞机订票系统程序设计
  8. html中高与行高的区别,CSS中line-height与height有什么区别
  9. python装饰器-简易版
  10. ceb怎么转换成word_win8.1系统将ceb文件格式转换成word的方法
  11. 城建坐标与经纬度转换工具
  12. Paper:人工智能可解释性的背景/方法/伦理/教育/可解释性的基本原理/Interpretability和Explainability区别之《可解释人工智能的教育视角:基于伦理和素养的思考》解读笔记
  13. Excel锁定单元格不能修改,怎么办?
  14. TensorFlow北大公开课学习笔记-8 复现vgg16并实现图片识别
  15. 五年从程序员到架构师的职业规划
  16. JavaScript 学习总结(全)
  17. 《大明王朝1566》观后感
  18. 处理打包后的.air文件不能打开的情况
  19. MyBatis-Plus学习总结
  20. 【嵌入式基础小知识】Nand Flash VS Nor Flash

热门文章

  1. JAVA面试宝典(非常详细,亲身经验总结)
  2. 20幅精美绝伦的光涂鸦摄影作品欣赏
  3. 关于如何在Word PPT中使用LaTex数学公式
  4. Zigbee学习(二)协调器程序
  5. 内建对象(数组,日期dete)
  6. matlab彩色碎片拼接与复原_用Matlab解《2013年数据建模比赛》图像碎片拼接题
  7. 全美达一个人们所不了解的故事
  8. PDA扫码设备放置一会就休眠的解决办法
  9. solidworks调用toolbox出现未配置怎么办
  10. Python安全测试工具合集