Activity
Activity生命周期
onCreate()
onStart()
onResume()
onPause()
onStop() onRestart()
onDestory()
Activity启动模式
standard(标准) singleTop(栈顶复用) singTask(栈内复用,同时清理顶部) singInstance(新单实例栈)
Activity scheme跳转
Fragment
第五大组件
fragmeng加载到Activity中
1>添加fragment到activity的布局文件中
2>动态加载 fragmentManager,transation
FragmentPagerAdapter与FragmentStatePagerAdapter区别
1.页面较少用前者 页面较多用后者
2.前者transation调用detach 分离fragment和Activity 并非真正回收内存,后者调用remove是真正销毁回收内存
Fragment 生命周期
开始创建fragment
onAttach()
onCreate()
onCreateView()
onViewCreated()
Activity-onCreate()
onActivityCreated()
Activity-onStart()
onStart()
Activity-onResume()
onResume() fragmeng初始化完毕
onPause()
Activity-onPause()
onStop()
Activity-onStop()
onDestoryView()
onDestory()
onDetach() fragmeng对象销毁
Activity-onDestory()
fragmeng通信
1.fragment初始化传值:在Activity里设置值:fragment.setArguments(bundle) 在Fragment里获取值:getArgument()
2.实时动态传值 接口回调
3.getActivity 调用activity public方法
4.findFragmentById()调用指定fragment的方法
5.eventBus/RxBus
fragment的replace、add、remove方法
Service
一种可以在后台长期运行操作而没有用户界面的应用组件,运行在主线程,不能进行耗时操作
service 与 thread区别
1.定义
2.实际开发
3.应用场景
startService 后台运行
继承service,配置,通过startService启动,通过stopService停止
bindService 绑定activity启动
继承service,配置,继承ibinder实现功能,在Service中的onBind中 返回一个自己写的ibinder实例,在使用service的activity中 重写ServiceConnection 通过传递过来的ibinder 实现activity 与service 的交互
Broadcast Receiver
应用程序之间传递信息的机制
应用场景
1. 同一个app 多个进程 的不同组件 之间的消息通信
2. 不同的app之间组件消息通信
广播的种类
1. Normal Broadcast:sendBroadcast
2. System Broadcast:sentOrderedBroadcast
3. Local Broadcast:只在app内传播
实现广播-receiver
1.静态广播:注册完成一直运行 manifest.xml注册
2.动态注册:跟随activity生命周期 代码中调用registerReceiver
内部实现机制
1.继承重写BroadcastReceiver的onReceiver方法
2. 通过Binder机制向AMS(Activity Manager Service)进行注册
3. 广播发送者通过Binder机制向AMS发送
4. AMS查找符合条件(IntentFilter/Permission)的BroadcastReceiver,将广播发送到BroadcastReceiver的消息循环队列中
5. 消息循环执行拿到此广播,回调broadcastReceiver中的onReceiver方法
LocalBroadcastManager
1.使用它的app只能在自身内部传播,不必担心隐私泄漏
2.其他app也无法对你的app进行广播,你的app根本无法接收到非自身app发送的广播
3.比系统的全局广播更高效
WebView
WebView一些常见的坑
1.WebView.addJavascriptInterface
2.webview在xml布局文件中的使用:webView写在其他布局中
3.jsbridge
4.webviewClient.onPageFinshed->webChromeClient.onProgressChanged
5.后台耗电
6.webView开启硬件加速导致页面渲染问题
webView内存泄漏问题
1.使用独立线程,简单,不过可能涉及进程间通信问题
2.动态添加webview,对传入的webview的context使用弱引用,动态添加的意思是在布局中创建一个viewGroup来放置webview,在activity创建是add进来,activity停止时remove掉
Binder
Linux内核的基础知识
1.进程隔离/虚拟地址空间
2.系统调用
3.binder驱动
binder通信机制介绍
1.为什么使用Binder
1)android的使用Linux内核有着非常多的跨进程通信机制
2)性能
3)安全
2.binder通信模型
1)通信录:binder驱动
2)电话基站:serviceManager
3.到底什么是Binder
1)通常意义,binder指的是一种通信机制
2)对于server进程来说,Binder指的是binder本地对象 /对于client来说,指的是binder代理对象
3)对于传输过程而言,binder是可以跨进程传递的对象
## AIDL