凌宇的android备忘录
- Android原有技术的深入
- Android Ar Vr 的学习 这个东西要从今天开始
- Android 软硬件 结合
生命周期
- onStart 和onResume 、onPause 和onStop 感觉差不多,但是他们有什么区别呢?
其实他们2对都是差不多的,只是onstart和onStop是从Activity是否可见这个角度来说的,而onResume和onPause是从activiy是否位于前台这个角度来说的
可以简单地理解为:onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)和 onRestoreInstanceState(Bundle savedInstanceState)只会在app异常终止地情况下被调用,而其他情况下他们不会被调用
栈:后进先出(吃了吐)
队列:先进先出(吃了拉)-
Activity的四大启动模式:standard、singleTop、singleTask、singleInstance
- standard 标准启动模式:每次启动activity都会创建一个新的实例,不管这个实例是否会存在;在这种启动模式下,谁启动了这个activity,那么这个activity就会运行在启动他的那个activity所在的栈中
- singleTop 栈顶复用模式:如果新的activity已经位于任务栈的栈顶,那么这个activity不会被重复创建,同时会回调他的onNewIntent()方法,而且它的oncreate,onstart方法也不会被调用;但是如果该activity不是位于栈顶的话,则会被重复创建。
- singleTask栈内复用方法:只要activity在一个栈内存在,那么多次启动此activity都不会重复创建实例,同样,系统也会回调onNewIntent()方法,如果栈内有其他activity,那么具有这个属性的activity会清除掉所有在它上方的activity,从而使自己处于栈顶
- singleInstance 单实例模式:具有singleTask的所有特性,但是该启动模式的activity只能单纯地处于一个任务栈里面。
IPC 跨进程通信
- android使用多进程只有一个方法:在AndroidManifest.xml中给4大组件(Activity,Service,Receiver,ContentProvider) 通过指定android:proccess属性。 Ps: 其实还有另外一种方法:通过jni在native层fork一个新的进程
- 如果两个东西(四大组件之一)跑在了不同的进程里面,那么通过内存来共享数据的方法肯定都是会失败的,因为android的机制来说,不同的进程对应了不同的虚拟机,不同的虚拟机对应了不同的内存(内存都不同了,通过内存来进行共享数据,怎么可能会成功呢?)
- 静态成员和单例模式完全失效
- 线程同步机制完全失效
- sharedPreferences的可靠性下降
- Application会被多次创建
- 进程间通信的方法:
- 进程间通信的方法:
- Messenger
- Aidl
- ContentProvider
- Socket
adb 命令行
- 如果在cmd中遇到了Permission denied 权限问题 可以动态申请root权限:** su root**