客户端基础知识必备 | 青训营笔记

73 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

什么是程序?

开发者:代码+资源

用户视角:界面、互动、记忆 去作为工具、游戏etc

客户端基本知识

安卓组件

基本组件(Android四大组件)

  1. 界面组件 Activity & Fragment
    • Activity

      • What:桌面首页、软件某一个页面(界面的容器)
      • Why: 前台交互、程序入口、布局容器
      1. 注意正常生命周期与异常异常周期
      2. 注意安卓机型兼容问题
      3. 注意内容书写在哪一个重写的方法里面(例如onStop()有时候走不到,导致内容没有执行)

      Q:解决接电话Crash问题

      原因:页面被回收导致本地变量被置空

      解决方案:

        1. 添加判空逻辑避免空指针问题
        2. 在页面回收生命周期中储存数据,页面重建时恢复
      

      Q: 加入首页按钮后,点击会在当前页面栈加入新首页,返回后首页消失

      预想结果为:点击首页按钮回到首页,上面页面全部退出

      1. Activity启动模式launchMode
        • Standard:默认模式,允许Activity重复
        • SingleTop: 栈顶服用,不允许Activity连续重复
        • singleTask: 不允许同个栈内重复可以实现效果
        • singleInstance:整个系统中不允许重复开发中较为少用 思考:图库App需要每个页面都是Activity吗? 用到Fragment
    • Fragment(初衷:解决碎片化问题,轻量级页面容器)

      • What :下面有导航栏的页面
      • Why: 速度快;做一部分组件的分离(将页面上下分离,分别用Fragment承载)
      1. 历史上有两套,兼容X的版本常用
      2. Activity与Fragment有绑定过程,注意如何对应
        • onAttach() Fragment和Activity建立关联时调用常用

          注意需要绑定后才能调用Activity,否则里面是空(容易犯的错误)

        • onCreateView() 当Fragment创建视图时调用常用

        • onActivityCreated() Activity的onCreate()方法已返回时调用

        • onDestroyView() 当Fragment的视图被移除时调用

        • onDetach() Fragment和Activity取消关联时调用

      3. 与Activity交互(组件获取 & 数据传递)
  2. 服务组件 Service
    1. 生命周期两种模式 常用:
      1. onStart()
      2. onBind()
      3. onCreate()
      4. onDestory()
    2. 与Activity通信
  3. 广播组件 Broadcast
    • 静态广播
    • 动态广播
    1. 有生命周期限制
  4. 数据组件 ContentProvider & ContentResolver 做数据通信 不考虑权限情况下,与系统通信
    • ContentProvider生产者
    • ContentResolver消费者
    Q:扫描系统现有图片
  5. 意图组件 Intent
    • Context.startActivity(Intent)
    • Context.startService(Intent)
    • Context.sendBroadcast(Intent)
    1. 显式
    2. 隐式 进行模糊匹配
    3. 能力(有印象)
      • 电话
      • 短信
      • 网页
      • 地图
      • 拍照
      • 设置
      • 市场

通信组件(属于高阶部分)

多进程或多线程如何通信

  1. Handler 主线程资源宝贵
    • 学习核心原理
  2. Binder
    1. 服务端
    2. 客户端
    • Binder核心原理
      • 匿名共享内存概念
    • APP启动流程

文盲组件、。。。(缺

另:

图片浏览器

GridView+Adaptor 换图片源有不同显示

Viewpager+Adaptor 大图、左右滑

ps:注意不要来另一个activity就销毁了

跳转主页按钮

重复主页

认识的三个方法

  1. What
  2. why
  3. How

Q & A

looper一直循环为什么线程没有卡死?

链式唤醒机制。 没有任务时处于休眠状态,不是一直占用cpu的状态,所以不会卡死。