07 2022 档案
摘要:android进程优先级 前台进程 用户当前操作所在的进程 可见进程 没有任何前台组件,但是仍会影响用户在屏幕上所见的进程,除非是维持前台进程,一般是不会杀掉可见进程 服务进程 只有内存不足以维持前台进程和可见进程时,会杀掉服务进程 后台进程 可以被随时终止,lru机制 空进程 做缓存以缩短下次运行
阅读全文
摘要:MVP定义 1.M:依然是业务逻辑和实体模型 2.V:对应Activity,负责view的绘制以及与用户交互 3.P:负责完成View与model间的交互 这张图总结了MVP和MVC之间的关系 MVP模式model是不会直接和View进行交互的。 mvc模式model是可以和view直接进行交互的
阅读全文
摘要:概述 ConcurrentHashMap 是 HashMap 的升级版本,是 java.util.concurrent 包的重要成员。 特点 是线程安全的、支持高并发。 在默认理想状态下,ConcurrentHashMap 可以支持 16 个线程执行并发写操作及任意数量线程的读操作。 所以重点是 C
阅读全文
摘要:MVC MVC定义: M:model 模型 V:view 视图 C: controller 控制器 业务逻辑,界面,数据显示分离。 M: 处理业务逻辑 比如说数据库的操作,网络操作,甚至一些耗时操作都会放到model里面 V:处理数据显示部分 xml布局可以视为view层 C:主要是通过Activi
阅读全文
摘要:什么是冷启动 冷启动的定义 冷启动就是启动前,系统中没有该应用的任何进程信息 对应的是第一次打开应用和杀掉应用进程后再次进入应用。 冷启动 / 热启动的区别 热启动: 就是用户按了返回键或home键退出应用后,马上又重新启动应用 区别: 定义不同: 冷启动启动前,没有该应用的进程,需要重新创建该应用
阅读全文
摘要:java内存泄漏基础知识 简单说就是该被释放的对象一直没有释放,一直被某个对象持有导致不能垃圾回收。 java内存分配策略 静态存储区 主要存放静态数据,全局变量等。 这块内存在程序编译的时候已经分配好了,并且静态存储区中存储的变量在程序运行期间一直存在 栈区 方法体内的局部变量会在栈区内创建内存空
阅读全文
摘要:UI卡顿的原理 60fps->16ms android 每隔16ms,触发一次UI渲染。如果每次渲染成功,就可以达到流畅的效果。否则就是卡顿。 为什么是60fps,因为人眼对画面的捕捉是有一定限制性的,达到60fps即每秒60帧及以上人眼是分辨不出来的。 换算过来就是16ms内要完成一帧的渲染。 o
阅读全文
摘要:recycle方法 recycle方法什么意思,我们知道bitmap是存在于java内存和native内存当中的。 所以说当它被回收的时候,需要分两部分来回收,一是java内存一是native内存。 在android 3.0以前bitmap像素数据和bitmap对象是一起存放在堆中的。这时候你只需要
阅读全文
摘要:什么是OOM 当前占用的内存加上我们申请的内存资源超过虚拟机的最大内存限制就会抛出OOM(out of memory )异常; android中,系统会为每一个app分配内存空间,其实就是zygote进程通过fork操作拷贝自己, 这样每个app都可以运行在独立的进程空间内,不受其他app的影响 但
阅读全文
摘要:什么是ANR 如果有一段时间程序点击不够灵敏,系统就会向用户显示一个对话框,而这个对话框的内容就是anr(Application not responding) 让用户选择等待程序继续运行,同时也可以选择关闭对话框终止程序运行 结果就是非常影响用户体验 Activity最长时间五秒 广播最长的执行时
阅读全文
摘要:创建android项目后有三个Gradle 三个gradle分别是: app包目录下的 build.gradle 根目录下的 build.gradle 根目录下的 settings.gradle project根目录中的settings.gradle: 内部包含项目的module 这里分别是app和
阅读全文
摘要:Android事件分发机制 为什么会有事件分发机制 android上面的view是树形结构的,view可能会重叠在一起,当我们点击的地方有过个view都可以响应的时候,这个点击事件应该交给谁来处理,就需要事件分发机制。 1.概述 事件分发的三个重要方法 public boolean dispatch
阅读全文
摘要:什么是ListView ListView是一个能数据集合以动态滚动的方式展示到用户界面上的view ListView适配器模式 ListView只是一个垂直显示的列表而已,最关心的是把view准确无误的显示到它所在的item上。 ListView和数据是分开的,不直接接触,所以说只能通过adapte
阅读全文
摘要:IntentService是什么 IntentService是继承自Service并处理异步请求的一个类,但是优先级比Service高; 在IntentService内有一个工作线程来处理耗时操作(通过HandlerThread和Handler实现); 启动IntentService方式和传统Ser
阅读全文
摘要:HandlerThread是什么 HandlerThread产生背景 开启Thread子线程进行耗时操作 多次创建和销毁线程是很耗系统资源的。 (为什么呢,因为java的线程是依托操作系统,线程的创建和销毁以及频繁切换都涉及到用户态和内核态的切换,以及线程上下文的保存和恢复,所以是比较耗资源的。)
阅读全文
摘要:什么是AsyncTask: android提供的轻量级的异步类。 本质上是封装了线程池和handler的异步框架。由于内部继承了handler,方便在工作线程和ui线程之间灵活地切换。 只适合做一些耗时比较短的操作,如果需要耗时比较长的操作还是要用线程池。 AsyncTask使用方法: androi
阅读全文
摘要:Linux内核的基础知识 进程隔离和虚拟地址空间 为了保护操作系统中进程数据的安全性,设计了进程隔离机制; 目的是为了防止进程A可以去操作进程B的数据; 进程的隔离技术用到了虚拟地址空间 进程A的虚拟地址空间和进程B的虚拟地址空间是不同的; 这样就防止了进程A的数据可以写到进程B中去; linux操
阅读全文
摘要:webView开发常见的一些坑 Android API level 16以及之前的版本存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可以通过使用java 反射利用该漏洞执行任意java对象的方法 webview在布
阅读全文
摘要:广播 定义 在Android中,Broadcast是一种广泛运用在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据; 1.广播可以在不同应用程序之间传递信息,即应用定义了相应的action,就可以接收到数据;(这个也不一定
阅读全文
摘要:Service的应用场景,以及和Thread的区别 Service是什么 Service非常重要,可以用于在后台执行耗时逻辑,或者执行某些需要长时间运行的任务,而且不会看到界面。 甚至可以在程序退出的时候,让service仍然存活一段时间。 Service是一种可以在后台执行长时间运行操作而没有用户
阅读全文
摘要:Fragment为什么被称为第五大组件 fragment为什么被称为第五大组件 1.Fragment应用范围广 2.Fragment具有自己的生命周期 3.可以动态加载到Activity Fragment相比Activity更节省内存,UI切换效果更舒适。 Fragment加载到Activity的两
阅读全文
摘要:什么是activity 安卓为用户提供的用于各种比如滑动操作的接口 activity的四种状态 running: 活动状态,处于activity栈顶 paused: 失去焦点或者被一个非全屏的activity遮住,或者一个透明的activity在栈顶。 stopped: 被全屏显示的activity
阅读全文
摘要:计算机网络模型 OSI七层模型 ① 应用层 作用是通过应用程序间的交互来完成特定的网络应用。 该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。 例如:域名系统 DNS,支持万维网应用的 HTTP 协议,电子邮件系统采用的 SMTP 协议等。 在应用层交互的数据单元
阅读全文