这是我参与「第四届青训营 」笔记创作活动的的第2天。 what:是什么 why:为什么 how:怎么样怎么样才能学到更多关于课程的东西
什么是程序
如果是以程序员的角度就是代码+资源,为的是改变世界,经验和技术能让我们更好地学习
基础组件
界面组件:activity+fragment
activity是一个界面容器,而为什么要设计这个呢?
- 前台交互
- 程序入口
- 布局容器
如果是要以此场景设计,需要有相册展示页 相册图片页和图片大图页
我们设计页面 1.首先是在android.manifest中进行声明
2.声明布局文件
用逻辑进行绑定
注册-》布局-》绑定
需要注意的是为什么要用viewPager呢,是因为这适合左右滑动的情况。
activity的生命周期:
在onstart才会可见,在android5.0之前只能在onpause中进行保存数据的操作,之后能在onstop中进行数据的保存操作。但是不一定会走到onDestroy
1为部分遮挡 2为遮挡回复
如果页面时全遮挡,那么他会走到onstop然后恢复的时候需要走onstart
- 配置改变的场景:比如浏览屏幕时突然变成横屏的模式(1)销毁:resumed-onSaveInstanceState()-onPause()-onStop
###小结
拨打段话时会发生crash
这个crash可能是页面丢失所以数据空指针的问题所以需要 1.判断是否为空指针 2.在onSaveInstanceState中保存数据,在onRestoreInstanceState中恢复数据
启动模式
1.默认模式:允许重复
2.singleTop
如果将要启动的目标activity已经位于task栈顶时,系统不会重新创建目标activity实例,而是直接复用已有的activity实例。
3.singleTask
不允许同一个栈重复,如果这个activity在task栈里面没有,就直接进行创建,如果在栈顶,就不再进行创建,如果不在栈顶的话,就把activity上的全部activity全部pop出去使之成为栈顶
4. singleInatance
整个系统不允许重复,如果调用该activity的话会把activity推到前台,要注意的是含该activity的task就只会有这个task,并且这个task在栈顶。
启动模式小结
###Fragment(轻量级activity)
-
为了解决activity碎片化问题
-
Fragment的特点:速度快,activity的产生需要系统内核的调用,消耗的时间比较多
-
启动:onAttach()-onCreate()-onCreateView() -onActivityCreated()-onStart()-onResume() -Resumed
-
退出:Resumed-onPaused() -onStop()-onDestoryView() -onDestory()-onDetach()
-
部分覆盖:Resumed-onPause()-Paused
-
部分遮挡恢复:Paused-onResume()-Resumed
-
完全覆盖:Resumed-onPaused()-onStop()-onDestroyView()
-
完全遮挡恢复:onCreateView()-onActivityCreated()-onStart()-onResume()-Resumed
-
注:Fragment生命周期可以通过FragmentTransaction.setMaxLifecycle手动干预(如:直接设置在onPause()就结束Fragment生命周期)