进程优先级
android进程优先级有五个阶段
1.前台进程
与当前用户正在交互的组件所在的进程
2.可见进程
组件可见但是没有在前台所在的进程。
3.服务进程
后台开启了Service服务所在的进程。
4.后台进程
组件完全处于后台所在的进程。
5.空进程
没有任何组件存在的进程,优先级也是最低的。
四大组件
Activity
Activity是用来显示视图和与用户交互的组件
生命周期
onCreate(): activity启动回调
onStart(): activity所在进程已可见
onResume():activity所在进程在前台可以与用户交互
onPause():activity可见但不能交互
onStop():activity不可见 进程在后台 当重新可见会执行onRestart()->onStart()
onDestroy():activity销毁回调 通常进行一些系统资源回收操作
启动模式
1.SingleTop 栈顶复用
每次启动一个activity会判断是否处于任务栈栈顶
若存在不创建activity 会回调onNewIntent
2.SingleTask 栈内复用
每次启动一个activity会判断是否处于任务栈栈内
若存在不创建activity 会回调onNewIntent 并将其之上的activity全部出栈
3.SingleInstance 栈单实例
在栈内复用的基础上启动新activity会准备一个新的任务栈
4.Standard 默认模式 每次启动一个activity都会创建新的实例 加入到任务栈
scheme跳转协议
Android中的scheme是一种页面内跳转协议,通过自定义scheme协议,可以非常方便的跳转到app中的各个页面,通过scheme协议,服务器可以定制化告诉app跳转到哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转到相应页面等等。
Service
Service是用来在后台执行长时间操作的组件
启动Service
1.startService
通过Intent intent=new Intent(xxx.class);
startService(intent)启动
不再使用时 stopService(intent)
启动服务->oncreate()->onstartCommand()->运行服务->onDestroy()->服务销毁
2.bindService
创建BinderService服务端,继承自Service并在类中创建一个实现IBinder接口的实现实例对象并提供公共方法给客户端调用。
在客户端中,从onServiceConnected回调方法接收Binder,并使用提供的方法调用绑定服务。
bindService(intent, conn, Service.BIND_AUTO_CREATE);
启动服务->oncreate()->onbind()->运行服务->onUnBind()->onDestroy()->服务销毁
BroadcastReceiver
广播是是一种广泛运用在应用程序之间传输信息的机制 而广播接收者的作用就是接收到广播,本地广播使用handler机制,其他广播使用binder机制
广播
1.本地广播
localBroadcastManager.sendBroadcast(Intent),只在app内传播
内部通过Handler实现的更加高效和安全
2.有序广播
context.sendOrderBroadcast(Intent)方法发送的广播,可被拦截
3.标准广播
context.sendBroadcast(Intent)方法发送的广播,不可被拦截
广播接收器
1.静态注册
配置清单注册,注册完成一直在运行 即使进程结束
2.动态注册
跟随Activity的生命周期。
registerReceiver(networkChangeReceiver, intentFilter);
unregisterReceiver(networkChangeReceiver);
ContentProvider
提供进程间高效的数据共享,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性
使用现有的内容提供器来读取和操作相应程序中的数据
ContentResolver封装了对数据的增删改查等操作
通过事先商量好的URI,使用ContentValues存放数据
像操作数据库一样
创建自己的内容提供者来给我们的程序提供外部访问接口
新建一个类去继承ContentProvider类 复写抽象方法
onCreate()做更新版本升级工作
其他方法都是根据uri匹配做一些数据操作
Fragment
Fragment最初创建是为了适配分辨率不同的屏幕 缓解activity任务过重
体现了模块化的思想:可以理解为activity的模块化组件
由fragment管理多个view 而activity只需要管理fragment
有着自身的生命周期 更好管理和调度
生命周期
onAttach():与activity绑定
onCreate()
onCreateView() :初始化视图绑定
onViewCreated(): 视图创建完成回调
onActivityCreated() :activity创建完成回调
onStart()
onResume()
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach() :与activity解绑 fragment对象销毁
Fragment与Activity通信
1.fragment调用activity
MainActivity mainActivity = (MainActivity) getActivity();
mainActivity.methodA();
2.activity调用fragment
直接接口回调即可调用Fragment的任何可访问的方法
3.在Fragment中调用另外一个Fragment的方法
MainActivity mainActivity = (MainActivity) fragmentA.getActivity();
接口回调fragmentB的方法
Fragment与Viewpager组合使用
1.生命周期变化
viewpager有预加载机制 预加载左右两边的fragment
fragment1和2 的生命周期从onAttch()->....onResume();
当fragment从1滑到2时 fragment3的生命周期从onAttch()->....onResume()
但Fragment1加载了 OnPause()->onStop()->onDestroyView()
即viewpager会保持预加载数量的fragment的生命周期而之外的Fragment会进入后台回收
总结

网友评论