Android知识点更新(持续更新)

2 篇文章 0 订阅
2 篇文章 0 订阅
  1. 四大组件
    Activity ;Service;Broadcast Receive;Content Provider

  2. 活动的生命周期
    (1)onCreate:表示窗口正在被创建,进行初始化操作,例如加载布局文件;
    (2)onStart:窗口可见,但是没有出现在前台,用户不能交互,这个过程是窗口处在不可见->可见的过程中;
    (3)onResume:窗口可见并显示在前台与用户交互;
    (4)onPause:窗口正在停止;这个阶段可以做一些存储数据,暂停动画等一些不耗时的操作,否则会影响到下一个activity的显示;
    (5)onStop:activity此时不可见,仅在后台运行,同时可以做一些不太耗时的资源释放的操作;
    (6)onRestart:活动重新启动,发生在A->B->A的过程中;
    (6)onDestroy:窗口即将被销毁,做一些回收工作和资源的最终释放;

  3. Activity被覆盖
    (1)Activity被覆盖一部分(仍可见,如弹窗):onResume->onPause(暂停当前activity的运行);
    (2)Activity覆盖一部分返回到前台:onPause->onResume;
    (3)Activity被完全覆盖,完全不可见(如打开新的Activity,返回主屏,锁屏等):onResume->onPause->onStop;
    (4)Activity完全覆盖返回到前台:onStop->onRestart->onStart->onResume;

  4. 横竖屏对Activity生命周期的影响
    横竖屏切换设计到Activity的android:configChanges属性;
    (1)不设置configChanges属性:
    onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceState->onResume;
    (2)设置configChanges属性:
    生命周期没变化;

  5. 两个Activity A,B之间跳转必然执行的方法
    一定会调用A的onPause和B的onStart,onResume;
    不调用A的onStop是因为B不一定覆盖A的窗体;
    不调用B的onCreate是因为B可能在栈里;

  6. Activity之间传递数据的方式(6种)
    (1)通过Intent传递:简单的数据类型或者是可序列化的对象;通过Bundle可以实现多种数据的传递;
    (2)通过静态变量来传递(不建议);
    (3)通过全局对象来传递:定义Application全局类,并且包含无参的构造函数;
    (4)通过EventBus:传递大量数据时,利用实现parcelable接口进行序列化传递虽然便捷但是会有异常;
    EventBus是发布-订阅者模式,发布者通过EventBus发布事件,订阅者的事件处理方法将被调用;
    (5)借助外部存储:包括SharedPreference,SQLite;
    (6)LocalBroadcast(本地广播):只在本应用内,发送和接收可控;

  7. EventBus的四种线程模式:
    (1)ThreadMode.MAIN:无论事件是在哪个线程发布出来的,事件的订阅方法onEvent都会在UI线程中执行;
    (2)ThreadMode.POSTING:事件在哪个线程发布,订阅函数就在哪个线程中执行;
    (3)ThreadMode.BACKGROUND:如果事件在UI线程发布出来,则订阅函数就在子线程中运行,如果是在子线程发布出来,则仍在子线程中运行;
    (4)ThreadMode.AYSNC:无论事件在哪个线程中发布,都会新建一个函数来执行子函数;

  8. Activity的四种启动方式
    (1)Standard:每启动一次Activity,就会创建一个Activity实例位于栈顶;默认的启动模式,可能会造成OOM;
    (2)SingleTop:若新启动的Activity位于任务栈栈顶,则不会新建Activity实例,而是重用栈顶实例;适合接收新闻通知而启动的窗体页面;
    (3)SingleTask:查看activity所在的任务栈是否存在,如果存在则查找是否存在实例,存在则会直接引用,如果不存在则新建实例;如果不存在对应的任务栈,则新建一个任务栈,并创建Activity实例置顶;一般使用APP首页;
    (4)SingleInstance:具备SingleTask的所有特性,区别是这种模式Activity实例会独占一个任务栈,具有全局唯一性,整个系统只有一个实例;适合与程序分离的界面,如闹钟提醒;

  9. 任务栈
    (1)任务栈是程序通过任务栈来管理众多的activity;
    (2)任务栈的特点:是一种容器,遵循后进先出;一个app默认有一个任务栈,系统指定;也可以有多的任务栈,开发人员指定;

  10. Service
    (1)提供长期在后台运行的服务;特点是:无界面,后台运行,生命周期长,运行在主线程中;
    (2)分类:
    按运行地点分:本地服务:运行在主线程,主线成终止服务也会终止;应用于不需要常驻的服务;
    远程服务:运行在独立线程,常驻后台,不受其他Activity影响,使用AIDL(Android接口定义语言)进行IPC(跨进城通信);应用与系统级常驻的服务;
    按照运行类型分:前台服务:在通知栏显示通知;
    后台服务:完全不依赖UI,只要进程在,就可以继续运行;
    按功能分:可通信服务:只有绑定服务才可以与Activity通信;
    不可通信服务:调用者推出后,随即销毁;

  11. IntentService与Service的区别
    IntentService继承自Service类,Service默认运行在主线程中,不可以执行耗时操作,否则会出现ANR的现象;但是IntentService会开一个子线程,进行一些耗时操作的处理;

  12. Activity与Service的通信方式
    (1)binder + 回调:Activity通过binder获得一个Service的实例,同时利用接口回调来实现Service中进度变化主动通知Activity来更新UI;
    (2)广播(推荐LocalBroadcastManager):利用广播服务发送消息,活动接收消息;
    (3)binder + Handler:服务持有活动的Handler对象,服务通过handler来发送消息;
    (4)开源组件:EventBus;
    (5)AIDL;

  13. ContentProvider
    (1)作用:实现各个app的应用/进程间的数据交互和共享(跨进城通信);
    (2)原理:Binder机制

  14. BroadcastReceiver
    (1)作用:广播,全局的监听器,分为两个角色,广播发送者,广播接收者;监听APP发出的广播消息并相应;
    (2)注册:静态注册:在配置文件标签声明,常驻,不受任何组件的影响;引用:需要时刻监听的广播,例如网络变化;
    动态注册:在函数中调用,非常驻,灵活,声明周期受组件的影响;

  15. Context理解
    (1)是什么:可以看成语境,上下文,用户与操作系统的一个场景;
    (2)有两个具体实现:ContextWrapper(包装类),Contextlmpl(具体实现类);
    (3)Activity,Service,Application均继承自ContextWrapper类;

  16. Fragment
    (1)碎片,Activity的一部分,可理解为模块化的Activity;不能独立存在,依附于Activity;
    (2)声明周期:onAttach->onCreate->onCreateView->onActivityCreate->onStart->onResume->onPause->onStop->onDestoryView->onDestory->onDetach;
    (3)将Fragment添加到Activity中的方式:
    在Activity的layout文件中静态添加;
    在Activity的Java文件中动态添加;
    (4)activity与Fragment通信方式
    Activity传递数据到Fragment通过Bundle;
    Fragment传递数据到Activity利用接口回调;
    (5)Fragment之间通信
    通过FragmentManager标签获得Fragment对象;
    采取接口回调的方式进行传递数据;
    采用EventBus进行传递数据;

  17. Android五种数据存储方式
    (1)SharePreferences用户偏好设置,只能存储基本数据类型;
    (2)文件存储;
    (3)SQLite数据库存储;
    (4)ContentProvider:对数据进行封装,提供一种跨进城共享数据的方式;
    (5)网络存储;

  18. view绘制的流程
    measure(测量)->layout(布局)->draw(绘制)
    Measure的目的是为了测量view的宽和高;
    Layout的作用:根据子视图的大小以及布局参数的将view树放到合适的位置;
    Draw的作用是绘制view&viewGroup的视图;

  19. Android动画
    (1)view动画:帧动画;补间动画;
    (2)属性动画;

  20. Android事件分发机制
    (1)含义:view是树形结构,我们在屏幕上点击的地方可能是多个view可以进行响应,哪个view可以进行响应,这就是事件分发机制要做的事情;事件分发就是点击事件发生时,找到一个合适的控件来处理事件;

  21. android网络框架
    (1)okhttp:共享一个Socket来处理同一个同一个服务器的请求;
    (2)volley:使用网络不大但是频繁的网络通信;
    (3)Retrofit:本质上是okhttp的二次封装;

  22. Android的三级图片缓存机制
    (1)第一级:内存LruCache;
    (2)第二级:文件缓存;
    (3)第三级:联网加载;

  23. Android的六大布局
    (1)LinearLayout线性布局;
    (2)TableLayout:表格布局;
    (3)FrameLayout:帧布局;
    (4)RelativeLayout:相对布局;
    (5)GridLayout:表格布局;
    (6)AbsoluteLayout:绝对布局(淘汰)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值