SWBlog
SWBlog copied to clipboard
2016.10(drawable, android初学, 生命周期,任务与返回栈, IPC)
笔者自16年毕业至如今,开发 ios
三个月,Android
七个月。自觉学习的知识严重不足,但偶尔记点开发的心得。因此打算整理一下这些笔记,月为单位,特此记录。
2016.7 -- 2016.9 ios
开发时期三个月,暂且不表。
###2017.10
开始熟悉项目源码,几个学习的关键点:handle
, gradle
, 匿名内部类和泛型, adapter
, Layoutinflater.inflate
其中项目用到的Kvo绑定是借鉴ios的一套框架,可以使用 databinding
加以替换。
反射机制, AppBarLayout
关于Android Drawable的微技巧阅读 几个要点:
-
drawable
文件夹存放图片文件,.png
,.jpg
..9.png
,selector
的xml
文件,而mipmap
只用来存放应用程序的图标。 - 根据经验,公司的设计不可能每个尺度的图都能给到。图片最佳的放置文件夹是
drawable-xxhdip
。
//判断2的幂次方
if ((n & -n) == n) // ture
后面阅读了stormzhang的博客,Android学习之路
里面涉及到的书籍推荐,第一行代码,疯狂Android讲义, Thinking In Java中文版,Effective java中文版,我也七七八八看过。此外,还涉及到android基础的文章推荐,Android activity生命周期, 四大组件的基本介绍,Intent
, 屏幕适配。中级知识:view
, Gson
, 布局优化(inculde
重用,merge
, viewstub
), 异步消息处理。 进阶知识:gradle
, 性能优化,以及兼容库,必备的开源库等,非常值得一看。
awesome-android-tips:常用的android代码。
有关生命周期:
onresume
是activity
获得用户焦点,在与用户交互。
onstart
是activity
用户可见,包括有一个activtity或者view在其上面,但没有完全覆盖,用户可以看到但不能与其交互。
参考文章:Android任务和返回栈
有关任务栈:涉及到几种启动模式:
任务是一个antivity
的集合, 使用栈来管理其中的activity
, 也被成为返回栈(back task
)。
当任务处于后台,返回栈中的所有activity
都会进入停止状态。
默认的任务和activity
的行为
- 当
activity A
启动 B时,A进入停止状态,系统保留相关信息(滚动位置,文本框输入内容等)。如果用户在B中按下back
, A重新回到运行状态。 - 当用户按
Home
, 该任进入后台,返回栈中所有activity
进入停止状态而且状态被保留。重新打开时将后台任务直接到前台, 恢复最顶端activity
。 - 当用户按下
back
, 最顶端的Activity
从返回栈移除并被销毁,前面的activity
处于栈顶并活动。 - 每个
activity
都可以被实例化很多次,即使在不用的任务中。
通过在manifest
文件设置activity
是配置Intent的flag
来实现。
注意以下几个intent
的flag
。
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
定义启动模式(两种方式):
使用manifest
文件:launchMode
属性来制定
standard:默认启动,每次启动创建实例,并放入当前任务栈。
singleTop:若将启动act在当前任务栈中存在且处于栈顶, 不会创建实例,而是调用栈顶act
的onNewIntent()
方法。这种方式启动的act
可被实例化多次,一个任务也可包含多个实例
singleTask:系统创建一个新的任务,并将此act放入新任务栈底。如果现有任务已存在该act的实例, 系统不会再创建,而是直接调用onNewIntent()
。此模式在同一任务中只会存在一个实例。(此模式的启动act
都是指其他程序的act
, 才会创建新任务)
singleInstance:与singleTask
类似,但不会向act所在的任务中再添加其他act
。
使用Intent flags
在startActivity时,为intent
加入flag
来改变act
与任务的关联方式。
FLAG_ACTIVITY_NEW_TASK:新启动act
被放入新任务(启动其他程序),模拟launcher
。
FLAG_ACTIVITY_CLEAR_TOP:若将启动act
已存在,不会再创建,而是关闭此act
之上的所有act
。
FLAG_ACTIVITY_SINGLE_TOP:与singletop
的效果一样。
android的IPC:进程间通信,通过Binder
和socket
实现。
实现Serializable
,Pracalable
来持久化数据,完成对象的序列化,后者安卓主推,但是将对象序列化到存储设备或者对像序列化后通过网络传输稍显麻烦,所以选择使用。