美文网首页
技能树-android基础-四大组件

技能树-android基础-四大组件

作者: 6faef730638b | 来源:发表于2018-04-17 17:30 被阅读2次

进程优先级

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会进入后台回收

总结

总结

相关文章

网友评论

      本文标题:技能树-android基础-四大组件

      本文链接:https://www.haomeiwen.com/subject/imspkftx.html