这是我参与「第四届青训营 」笔记创作活动的第2天
什么是程序?
开发者:代码+资源
用户视角:界面、互动、记忆 去作为工具、游戏etc
客户端基本知识
安卓组件
基本组件(Android四大组件)
- 界面组件 Activity & Fragment
-
Activity
- What:桌面首页、软件某一个页面(界面的容器)
- Why: 前台交互、程序入口、布局容器
- 注意正常生命周期与异常异常周期
- 注意安卓机型兼容问题
- 注意内容书写在哪一个重写的方法里面(例如onStop()有时候走不到,导致内容没有执行)
Q:解决接电话Crash问题
原因:页面被回收导致本地变量被置空
解决方案:
1. 添加判空逻辑避免空指针问题 2. 在页面回收生命周期中储存数据,页面重建时恢复Q: 加入首页按钮后,点击会在当前页面栈加入新首页,返回后首页消失
预想结果为:点击首页按钮回到首页,上面页面全部退出
- Activity启动模式launchMode
- Standard:默认模式,允许Activity重复
- SingleTop: 栈顶服用,不允许Activity连续重复
- singleTask: 不允许同个栈内重复可以实现效果
- singleInstance:整个系统中不允许重复开发中较为少用 思考:图库App需要每个页面都是Activity吗? 用到Fragment
-
Fragment(初衷:解决碎片化问题,轻量级页面容器)
- What :下面有导航栏的页面
- Why: 速度快;做一部分组件的分离(将页面上下分离,分别用Fragment承载)
- 历史上有两套,兼容X的版本常用
- Activity与Fragment有绑定过程,注意如何对应
-
onAttach() Fragment和Activity建立关联时调用常用
注意需要绑定后才能调用Activity,否则里面是空(容易犯的错误)
-
onCreateView() 当Fragment创建视图时调用常用
-
onActivityCreated() Activity的onCreate()方法已返回时调用
-
onDestroyView() 当Fragment的视图被移除时调用
-
onDetach() Fragment和Activity取消关联时调用
-
- 与Activity交互(组件获取 & 数据传递)
-
- 服务组件 Service
- 生命周期两种模式
常用:
- onStart()
- onBind()
- onCreate()
- onDestory()
- 与Activity通信
- 生命周期两种模式
常用:
- 广播组件 Broadcast
- 静态广播
- 动态广播
- 有生命周期限制
- 数据组件 ContentProvider & ContentResolver
做数据通信 不考虑权限情况下,与系统通信
- ContentProvider生产者
- ContentResolver消费者
- 意图组件 Intent
- Context.startActivity(Intent)
- Context.startService(Intent)
- Context.sendBroadcast(Intent)
- 显式
- 隐式 进行模糊匹配
- 能力(有印象)
- 电话
- 短信
- 网页
- 地图
- 拍照
- 设置
- 市场
通信组件(属于高阶部分)
多进程或多线程如何通信
- Handler
主线程资源宝贵
- 学习核心原理
- Binder
- 服务端
- 客户端
- Binder核心原理
- 匿名共享内存概念
- APP启动流程
文盲组件、。。。(缺
另:
图片浏览器
GridView+Adaptor 换图片源有不同显示
Viewpager+Adaptor 大图、左右滑
ps:注意不要来另一个activity就销毁了
跳转主页按钮
重复主页
认识的三个方法
- What
- why
- How
Q & A
looper一直循环为什么线程没有卡死?
链式唤醒机制。 没有任务时处于休眠状态,不是一直占用cpu的状态,所以不会卡死。