Android统计内存占用
基本概念RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
内存统计方法: adb shell dumpsys meminfo packageName adb shell top Android studio profiler
代码中获取 通过Runtime获取 通过ActivityManager获取
Android Framework 框架说明
Android Framework 是指 Android 操作系统的核心组件,它为应用程序开发者提供了一套开发库和系统服务。开发者可以利用这些库进行应用开发,而系统服务则保证应用在设备上正常运行。
Framework 主要包含以下几个部分:
应用框架(Application Framework): 为开发者提供的API库,例如Activity, Content Provider, View等。
原生系统服务(Native System Services): 如硬件抽象层(HAL),安全框架等。
系统库(System Libraries): 如Media Framework,SQLite等。
Android运行时(Android Runtime): 包括Dalvik虚拟机或者ART,负责应用代码的执行。
硬件抽象层(Hardware Abstraction Layer): 提供标准接口供硬件厂商实现。
要理解Android Framework的运作,需要对以下内容有所了解:
Android应用组件(Activities, Services, Broadcast Receivers, Co ...
Android FrameWork概述
一、认识Framework层Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。
用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。
用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。
二,核心内容掌握程度
Android源码非常庞大,但设计很精妙。纵向分层,横向模块化,使得整个源码更易更新和维护。在手机厂商做framework的更倾向于说自己是做Android系统的,维护的模块主要包括ActivityManagerService、WindowManage ...
Hexo使用说明
准备工作加快npm安装速度npm config set registry https://registry.npmmirror.com/
需要在阿里云等注册一个域名,可以选择xyz等域名,并将该域名dns托管到cloudflare阿里云购买的域名如何使用cloudflare的域名解析服务?:https://bbs.maozhishi.com/d/56-cloudflare
创建Hexo
需要全局安装 Hexo CLI 工具npm install -g hexo-cli
进入一个目录,执行hexo init,会在该目录下得到hexo所需要的文件如果无权限,执行如下命令:Set-ExecutionPolicy RemoteSignedSet-ExecutionPolicy -ExecutionPolicy RemoteSigned
生成并在本地浏览hexo ghexo s浏览网址
上传的Github GitHub创建私有仓库 git clone 仓库 将上面创建的Hexo目录下的所有文件,拷贝到该git仓库下git initgit add .git commit -m “In ...
Android暂停/恢复不起作用
Android暂停/恢复不起作用Android暂停/恢复不起作用是指在Android应用程序中,暂停或恢复功能无法正常工作的问题。这可能是由于多种原因引起的,下面是一些可能的原因和解决方法:
原因:线程问题:暂停/恢复功能可能涉及到线程的控制,如果线程没有正确管理或同步,就会导致暂停/恢复不起作用。生命周期问题:Android应用程序有不同的生命周期状态,如果暂停/恢复功能没有正确处理这些状态的转换,就会导致问题。错误的实现:暂停/恢复功能的实现可能存在错误,例如错误的方法调用或逻辑错误。解决方法:检查线程:确保在暂停/恢复功能中正确管理和同步线程。可以使用Android提供的线程管理机制,如Handler、AsyncTask或线程池。处理生命周期:在应用程序的不同生命周期状态下,正确处理暂停/恢复功能。例如,在Activity的onPause()和onResume()方法中执行相应的操作。仔细检查实现:仔细检查暂停/恢复功能的实现,确保没有错误的方法调用或逻辑错误。
分块查找原理与优缺点
分块查找是一种介于顺序查找和二分查找之间的查找方法,其基本原理是将数据分成若干块,并建立一个索引表,索引表中的每个元素指向对应块的起始位置。查找时,首先在索引表中确定目标元素所在的块,然后在该块内进行顺序查找
分块查找的基本步骤建立索引表:将数据分成若干块,每个块内的元素可以是有序的,但不同块之间的元素顺序不做要求。记录每个块的起始位置和结束位置,并建立一个索引表来存储每个块的起始位置确定目标块:根据目标元素的值,在索引表中查找到目标元素可能所在的块的区间块内查找:在确定的块内部对元素进行顺序查找,直到找到目标元素或者确认目标元素不在该块内分块查找的优缺点优点:适应动态变化:分块查找特别适合于节点动态变化的情况,因为只需调整节点所在的块,而不需要对整个数据进行排序提高查找效率:当节点很多且块数很大时,对索引表可以采用二分查找,从而进一步提高查找的速度
缺点:块内无序:由于块内元素可以是无序的,因此在块内部仍然需要进行顺序查找,这可能会带来一定的时间开销节点频繁变化的影响:当节点变化很频繁时,可能会导致块与块之间的节点数相差很大,这会降 ...
分块查找原理与优缺点
排序算法可以分为两大类:比较类排序和非比较类排序。
比较类排序
冒泡排序(Bubble Sort):通过重复地走访数列,比较相邻元素并交换错误顺序的元素,直到数列排序完成。冒泡排序是稳定的排序算法。* 选择排序(Selection Sort):在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,依次类推。选择排序是不稳定的排序算法。
快速排序(Quick Sort):是对冒泡排序的一种改进,通过选择一个基准元素,将数列分为两部分,一部分所有元素都比基准元素小,另一部分所有元素都比基准元素大,然后递归地对这两部分进行排序。快速排序通常是不稳定的,但可以通过改进变为稳定的。* 归并排序(Merge Sort):采用分治法,将数列分为两部分,分别对两部分进行排序,然后将排好序的两部分合并。归并排序是稳定的排序算法。
堆排序(Heap Sort):利用堆这种数据结构所设计的一种排序算法,堆是一个近似完全二叉树的结构,并同时满足堆积的性质,即子节点的键值或索引总是小于(或大于)它的父节点。 ...
常用排序算法的性能
常用排序算法的性能
算法
平均时间复杂度
最好情况
最差情况
空间复杂度
排序方式
稳定性
冒泡排序
O(n2)O(n2)
O(n)O(n)
O(n2)O(n2)
O(1)O(1)
in-place
稳定
选择排序
O(n2)O(n2)
O(n2)O(n2)
O(n2)O(n2)
O(1)O(1)
in-place
不稳定
插入排序
O(n2)O(n2)
O(n)O(n)
O(n2)O(n2)
O(1)O(1)
in-place
稳定
希尔排序
O(nlogn)O(nlogn)
O(nlogn)O(nlogn)
O(n2)O(n2)
O(1)O(1)
in-place
不稳定
归并排序
O(nlogn)O(nlogn)
O(nlogn)O(nlogn)
O(nlogn)O(nlogn)
O(n)O(n)
out-place
稳定
快速排序
O(nlogn)O(nlogn)
O(nlogn)O(nlogn)
O(n2)O(n2)
O(n)O(n)
in-place
不稳定
堆排序
O(nlogn)O(nlogn)
O(nlogn)O(nl ...