《第一行代码》(2)整理读后笔记

来源:互联网 发布:电子文档软件 编辑:程序博客网 时间:2024/05/17 03:46

准备开始前

A: 先上图以给大家最直接的体验:
实现的功能类别图例:

图例1:
这里写图片描述
图例2:
这里写图片描述
B: 挑选了两个项目截图说明:
一个UI布局项目,图2(随意找的几个图片加载的):
这里写图片描述
天气预报小项目:图3
这里写图片描述

资料下载:

  • 《第一行代码 2》书籍下载

    http://download.csdn.net/download/u013472738/10007552

  • 第一行代码(第二版)源码与目录 :

  • 个人学习代码注释说明 +apk
    http://download.csdn.net/download/u013472738/10006972

阅读安排:

第一弹:

读书计划时间:6天;开始于:8.17 号;
8.17号学习:

  • 隐式意图:Intent
  和显示意图的功能使用功能类似:都可传递参数和相应事件。 但是 隐式意图的配置不是在代码中配置的;主要是在清单文件(Mainfest)中配置的,(可以通过一个活动(Activity)启动另一个活动(Activity))

例如步骤:ActivityA 向 ActivityB中相应事件:
A: 在 ActivityB 的清单文件(Mainfest)配置中添加过滤配置:如:

<intent-filter>    <action   android:name="apps.tj.my.androidbook2test.TJTest_Intent" />    <category android:name="android.intent.category.DEFAULT" />    <category android:name="android.TJTest_Intent" /></intent-filter>

B: 在ActivityA 需要相应的地方,也就是传递信息的地方:即可。如下

Intent ist = new Intent("apps.tj.my.androidbook2test.TJTest_Intent") ;   // its.addCategory("android.TJTest_Intent");//TJ:可以添加多个 相应意图startActivity(ist);

说明:

过滤器(Intent-filter) 中的:<cation android:name= “xxx.text.xxx”/>里面的:“xxx.text.xxx”;表示和隐式意图的绑定的数据,标签:category 说明是自己定义的一个相应配置。备注:隐式意图中Intent中的 参数可以有多个相应;使用标签:category 
  • 活动(Activity)的四种启动模式:
    详情参考查看:
    http://blog.csdn.net/shinay/article/details/7898492/

standard:

默认的启动模式,可以不用在Mainfest文件中配置;特点是:每次响应活动ActivityB都会重新创建一个新的实例;所以如果多次相应该实例;就会在堆栈中多次含有多个该实例。例如:ActivityA上面一个按钮 相应跳转ActivityB;当我多次点击这个按钮时;就会启动多个ActivityB 叠加在一起。

singleTop:

特点是:不同于standard模式;该模式下如果活动ActivityB处在栈顶(后进先出的原则)则多次相应ActivityB的时候;只创建一个该ActivityB实例。例如:ActivityA上面一个按钮 相应跳转ActivityB;当我多次点击这个按钮时;程序会判断当前ActivityB是否处在栈顶;如果是 那么就不再创建新的实例;反之如:ActivityA点击跳转到ActivityB,点击ActivityB中按钮跳转到ActivityC(这个时候ActivityC处在栈顶),再次点击ActivityC中的按钮跳转到ActivityB (这个时候ActivityB不在栈顶,ActivityC在栈顶)则创建另一个新的实例ActivityB。

singTask:

特点是:比singleTop 模式又进一步人性化;如果当前实例在同一个栈中;就不在创建。例如:ActivityA点击按钮跳转到ActivityB:这个时候多次点击ActivityA中的按钮都不会再新建一个ActivityB的实例;因为ActivityB已经在栈中存在。同样的:如果ActivityA点击按钮跳转到ActivityB 、ActivityB点击按钮跳转到ActivityC、ActivityC点击按钮跳转到ActivityB;这个逻辑中最后也跳转到ActivityB的时候也不会重新新建一个实例;因为 ActivityB已经在栈中。所以 只要活动在栈中就不会在后面的再次调用中重新创建一个实例了。

singleInstance:

 不同于上面的三种模式的本质是:上面的三种默认都是在同一个栈中操作的; 而singleInstance模式是新建了一个栈进行操作的,并且只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。特点是:上面的三种默认都是在同一个栈中操作的; 而singleInstance模式是新建了一个栈进行操作的。例如:ActivityA和ActivityC是上面三种模式的任一种,而ActivityB是singleInstance模式,如果ActivityA点击按钮跳转到ActivityB(新建自己的唯一栈和唯一实例),然后ActivityB点击按钮跳转到ActivityC(这个时候ActivityA和ActivityC处在同一栈中);那么这个时候在ActivityC中点击返回、首先返回的同一栈的ActivityA、再点击返回才会返回到ActivityB。这个是最简单的一种操作方式,在这个模式中还主要涉及到另外其他的活动都打开ActivityB 这个操作会复杂些。

在Mainfest.xml的活动汇总配置方式例如:

android:launchMode="standard"
  • 在Android开发过程中 文本的大小一般使用像素单位是:sp(更完美的适配各种屏幕大小)。
  • Activity父类管理器:BaseActivity
开发项目中为了更好的管理活动(Activity) 比较方便的做法是 让活动都继承一个父类的活动(BaseActivity);如果方便更好的处理全部的活动的退出,那么就需要一个活动的管理器(ActivityCollectors.java)便于程序在任何想要退出的地方都能退出。

第二弹:

Ok———–8.17号学习完。
第一弹大致看到160页
也是看完了150页的量;考虑到 时间问题(学习到凌晨6点…)下一学习计划有代码调试测试:

  • RecyclerView 测试(完美替代ListView)
  • fragment碎片化测试。(当下测试到第160 ;后面的新闻客服端 稍后要测试,巩固)外加需要新学习:50页;到210页以上。
  • 广播:
    A:系统广播:全局广播(所有的应用都能接收到)
动态注册:只能在程序打开后才能访问激活,能在代码中关闭。静态注册:最大区别是程序不用打开就能接收到:比如开机自启动功能。

B:自定义广播:可以是全局广播(其他三方程序也能访问)

特点:自己可以动态或者静态注册广播 ;想怎么定义就怎么定义。灵活。

C:本地广播:只能使用在当前项目中。

特点:最大不同就是只能在该项目中使用;其他三方程序不能访问到。
  • onResume():
onResume()是当该activity与用户能进行交互时被执行,用户可以获得activity的焦点,能够与用户交互。这也解释了 为什么 章节:5.5强制下线为什么是在父类的:onResume()方法中接受广播;因为这个时候的活动是处在栈顶的(也就是用户看到的界面和能操作的界面。)
  • SharePreferences存储:可以很好并且简易的存储 数组数据集合内容。

说明:Git暂时还是使用的可视化的SmartGit操作上传和管理代码。

第三弹:

Ok———–8.18号学习完。
第二弹大致看到211页完成计划。下一个学习计划: 80 页。
8.19号学习…

  • 数据库 :LitePal 库:这个到后面会整理一份到CSDN上面。
  • ContentPrivate 跨进程(项目)共享数据:项目一就是当前的项目;项目二是同一级目录下的:TestContentPrivates项目。 完美测试+注解 。

第四弹:

Ok———–8.19号学习完。
第三弹大致看到291页完成计划。下一个学习计划: 80 页。

  • 工作时间部分。
  • 抽出下班后时间 学习部分内容。

说明: 工作项目维护,优化项目内容。

第五弹:

Ok———–8.20号学习完。
第四弹大致看到371页完成计划,下一个学习计划:30页。
学习前要求:

  • 完成“下载示例”小项目;(从:P366 页开始了。)

    第六弹

    Ok———–8.21号学习完。
    第五弹大致看到408页完成计划。
    调整时间:——-不计在计划内天数。
    原因是:到SS2-EAST 团建去了。
    下一个学习计划:看完第12章节;(代码适当)大概50页。
    学习内容:

    • 完成“下载示例”小项目;(从:P366 页开始了。)但是运行有bug;解决。

    • 圆形图片优化库: circleimageview :
      https://github.com/hdodenhof/CircleImageView

    • 完美完成第12章节全部内容;很不错的界面效果。
    • runOnUiThread 的用处和 Handler的区别。
    • 天气项目中可以使用必应的每日一图作为背景;(考虑)
    • 学习完了第14章内容;并写完了代码;只是代码有点瑕疵…要调试看看。

    第七弹

    最后一弹:最后一章学习。

    • 优化上一弹的问题;
    • 理解窗口:android:fitsSystemWindows=”true”
    • 解决背景和状态栏没有融合到一起:SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
      参考:
      http://blog.csdn.net/stevenhu_223/article/details/12428591
    • 安全起见:在Release版本中明文签名信息最好配置在:根目录下的:gradle.properties中。

本书阅读完。 意犹未尽啊。
终于有时间简单整理了一下个人的学习路线了;
值得高兴的是:《Android源码 设计模式》一书阅读也接近尾声了…….

此文章只为记录个人曾经的学习路线,或者对 作为读者的你 的参考意义不大;
但是 个人感觉:学习 是我们每个人应该坚持的。坚持学习;拥有成长。