Intent 调用浏览器打开网页 拨打电话 其他常用Intent 向下一个活动传递数据 向上一个活动传递数据 通过按下Back键向上传递 活动的生存期 活动被回收前的数据保存与恢复 创建自定义控件 报错整理...,即在FirstActivity 这个活动的基础上打开SecondActivity 这个活动。...); startActivity(intent); } 使用隐式Intent 通过在标签下配置的内容,可以指定当前活动能够响应的action 和category ,打开AndroidManifest.xml...这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。 ...活动被回收前的数据保存与恢复 **onSaveInstanceState()**回调方法可以保证在活动被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。
并不是所有的节点都有JS包装器,不过,如果有包装器,并且document处于活动状态,包装器也将处于活动状态 有时,对象可能会被调试程序上下文和DevTools console保留(例如,在console...但忘记释放wrapper的话,就将持有整个对象组和相关wrapper 三.工具用法 Task Manager 用来粗略地查看内存使用情况 入口在右上角三个点 -> 更多工具 -> 任务管理器,然后右键表头...DOM节点存储在原生内存中,如果此值正在增大,则说明正在创建DOM节点 JS使用的内存列表示JS堆。此列包含两个值,需要关注的是实时值(括号中的数值)。实时数值表示页面上的可访问对象正在使用的内存量。...如果该数值在增大,要么是正在创建新对象,要么是现有对象正在增长 Performance 用来观察内存变化趋势 入口在DevTools的Performance面板,然后勾选Memory,如果想看页面首次加载过程内存使用情况的话...如果定义在replaceThing里的函数都实际使用了originalThing,那就有必要保证让它们都取到同样的对象,即使originalThing被一遍遍地重新赋值,所以这些(定义在replaceThing
,如果从一个页面打开了一个新页面,新打开的页面与当前页面还属于同一个站点的话,那么新页面会复用当前页面的渲染进程。...主垃圾回收器是使用了标记 - 清除(Mark-Sweep)的算法,工作流程如下: 首先是标记阶段,从一组根元素开始递归遍历,能到达的元素就是活动对象,否则就是垃圾。...并行回收:垃圾回收器会使用多个辅助线程来并行执行垃圾回收 并发回收:回收线程在执行 JavaScript 的过程中,辅助线程在后台执行垃圾回收 如果你了解 React 的 Concurrent 模式中时间切片的原理...在上图中,有一个元素在一帧中占据了视口的一半。然后,在下一帧中,元素下移视口高度的 25%。...在上图中,最大视口尺寸是高度,不稳定元素已经移动了视口高度的 25%,所以距离分数是 0.25。
Ctrl + F4 关闭活动文档 Ctrl + A 选择文档或窗口中的所有项目。 Ctrl + D(或 Delete) 删除选定项,将其移至回收站。 Ctrl + R(或 F5) 刷新活动窗口。...任务栏 快捷键 说明 Shift + 单击任务栏按钮 打开应用或快速打开另一个应用实例。 Ctrl + Shift + 单击任务栏按钮 以管理员身份打开应用。...Ctrl + 向上键 在输出历史记录中上移一行。 Ctrl + 向下键 在输出历史记录中下移一行。 Ctrl + Home(历史记录导航) 如果命令行为空,则将视区移动到缓冲区顶部。...Shift + Tab 在选项中向后移动。 Alt + 带下划线的字母 执行可与该字母结合使用的命令。 空格键 如果活动选项为复选框,则选择或清除复选框。...Windows 徽标键 + Ctrl + F4 关闭你正在使用的虚拟桌面。 附录 Windows 的键盘快捷方式
3.只要被另外一个作用域所引用就不会被回收 闭包是很多语言都具备的特性,在js中,闭包主要涉及到js的几个其他的特性:作用域链,垃圾(内存)回收机制,函数嵌套,等等....5、下一步是在活动对象上添加一个arguments属性,它保存着调用函数a时所传递的参数。 6、最后把所有函数a的形参和内部的函数b的引用也添加到a的活动对象上。...此时a返回函数b的引用给c,又函数b的作用域链包含了对函数a的活动对象的引用,也就是说b可以访问到a中定义的所有变量和函数。函数b被c引用,函数b又依赖函数a,因此函数a在返回后不会被GC回收。...闭包有三个特性: 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 闭包的定义及其优缺点 闭包 是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数...,通过另一个函数访问这个函数的局部变量 闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间,我们现在就尝试一下如何在活动中使用Toast。 ...处于暂停状态的活动仍然是完全存活着的,系统也不愿意去回收这种活动(因为它还是可见的,回收可见的东西都会在用户体验方面有不好的影响),只有在内存极低的情况下,系统才会去考虑回收这种活动。...onResume():这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。 onPause():这个方法在系统准备去启动或者恢复另一个活动的时候调用。...体验活动的生命周期: 详情还是看第一行代码比较好,但是主要思想是我们通过创建多个活动,通过按钮进行任务之间的切换,查看日志的内容进行观察上图中的方法调用情况: ? ...然后在FirstActivity界面再次按下Back键,这时当前的返回栈已经空了,于是就显示了另一个返回栈的栈顶活动,即SecondActivity。
闭包的特性 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 闭包的定义及其优缺点 闭包 是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数...,通过另一个函数访问这个函数的局部变量 闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。...一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同!...闭包会使变量始终保存在内存中,如果不当使用会增大内存消耗。 javascript的垃圾回收原理 1.在javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。...7.在循环中添加点击事件 window.onload = function(){ var aLi = document.getElementsByTagName('li');
下面来仔细看图,图中global是全局作用域就是根,下面的 A B C D E都是可达对象,而右边的obj1 和 obj2 在局部作用域中并且两个互相引用,不是可达对象无法进行标记就会被清除掉,其实标记清除算法也就解决了上述中的引用计数算法...标记整理算法 标记整理可以看做是标记清除的增强 标记阶段的操作和标记清除一致(遍历所有对象找标记活动对象(活动对象:可达对象)) 清除阶段会先执行整理,移动对象位置 看下图,是回收前的内存分布,后很多的活动对象...标记整理算法会在清除的时候先整理内存空间,移动对象的位置,整理的内存空间如下图 把活动对象进行移动在地址上变成一个连续的,然后再将非活动的对象进行回收。 ?...) 新生代对象回收实现: 回收过程采用复制算法 + 标记整理 新生代内存区分为二个等大小空间From 和 To 使用空间为From,空闲空间为To 活动对象存储于From空间 标记整理后将活动对象拷贝至...监控内存的方式 使用 Chrome 的任务管理器了解您的页面当前正在使用的内存量。
,定义好之后,这个name的值就会成为这个activity动作, 在隐式启动Activity时,意图中设置的action必须跟"com.itheima.sa"是完全匹配的...intent.putExtras(bundle); startActivity(intent); 如果要传递对象,需要把对象类序列化,然后intent.putExtra("mp3Info", mp3Info);在另一个...,采用最近最少使用算法(LRU) 活动被回收了怎么办 例如:MainActivity 中有一个文本输入框,现在你输入了一段文字,这时 MainActivity由于系统内存不足被回收掉,过了一会你又点击了...Activity中还提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...BaseActivity的 onCreate()方法中调用了 ActivityCollector的 addActivity()方法,表明将当前正在创建的活动添加到活动管理器里。
3、在活动使用Toast Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不占用任何屏幕空间。... 在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以将我们想要的数据暂存在Intent中,启动另一个活动后,只需要将这些数据取出就可以了。 ...此时的活动一定位于返回栈栈顶,并且处于运行状态。 onPause():在系统准备去启动或恢复另一个活动的时候调用。...例如:我们希望之前在一个文本框中输入了数据,希望下次打开时仍然保持该数据。...singleTop:在启动活动时如果发现返回栈的栈顶已经是该活动了,则认为可以直接使用它,不用再创建新的活动实例。 singleTask:确保返回栈中活动不重复。
正文 闭包的三个特性 函数嵌套函数 函数内部可以引用外部的参数和变量 参数和变量不会被垃圾回收机制回收 闭包的定义及优缺点 闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数...使用闭包有一个优点,也是它的缺点,就是可以把局部变量驻留在内存中,可以避免使用全局变量。全局变量在每个模块都可调用,这势必将是灾难性的。(所以推荐使用私有的,封装的局部变量。)...一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同!...闭包会使变量始终保存在内存中,如果不当使用会增大内存消耗。 JS的垃圾回收原理 在javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。...如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。 使用闭包的好处 那么使用闭包有什么好处呢?
Ctrl + D(或 Delete) 删除选定项并将其移动到“回收站” Ctrl + R(或 F5) 刷新活动窗口 Ctrl + Y 重做操作 Ctrl + 向右键 将光标移动到下一个字词的起始处 Ctrl...+ F10 显示选定项的快捷菜单 Shift 加任意箭头键 在窗口中或桌面上选择多个项目,或者在文档中选择文本 Shift + Delete 无需先将选定项移动到“回收站”,直接将其删除 向右键 打开右侧的下一个菜单...Ctrl + 向下键 在输出历史记录中向下移动一行 Ctrl + Home(历史记录导航) 如果命令行为空,则将视口移动到缓冲区顶部。...Ctrl + 向右键 在你于右侧创建的虚拟桌面之间进行切换 Windows 徽标键 + Ctrl + 向左键 在你于左侧创建的虚拟桌面之间进行切换 Windows 徽标键 + Ctrl + F4 关闭你正在使用的虚拟桌面...放大或缩小 Ctrl + 向左键或向右键 旋转 Ctrl + 向上键或向下键 倾斜 + 或 – 键 在 3D 城市视图中放大或缩小 Page Up 或 Page Down 在 3D 城市视图中推远或拉近
F4 在文件资源管理器中显示地址栏列表 F5 刷新活动窗口 F6 循环浏览窗口中或桌面上的屏幕元素 F10 激活活动应用中的菜单栏 Alt + F8 在登录屏幕上显示你的密码 Alt + Esc 按项目打开顺序循环浏览...Ctrl + D(或 Delete) 删除所选的项目,将其移至回收站 Ctrl + R(或 F5) 刷新活动窗口 Ctrl + Y 恢复操作 Ctrl + 向右键 将光标移动到下一个字词的起始处 Ctrl...Ctrl + 向下键 在输出历史记录中下移一行 Ctrl + Home(历史记录导航) 如果命令行为空,则将视区移动到缓冲区顶部。...n 个选项卡 Tab 在选项中向前移动 Shift + Tab 在选项中向后移动 Alt + 带下划线的字母 执行可与该字母结合使用的命令(或选择该选项) 空格键 如果活动选项为复选框,则选择或清除复选框...Ctrl + 向右键 在你于右侧创建的虚拟桌面之间切换 Windows 徽标键 + Ctrl + 向左键 在你于左侧创建的虚拟桌面之间切换 Windows 徽标键 + Ctrl + F4 关闭你正在使用的虚拟桌面
闭包的特性 闭包有三个特性: 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数和变量不会被垃圾回收机制回收 闭包的定义及其优缺点 闭包 是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数...,通过另一个函数访问这个函数的局部变量 使用闭包有一个优点,也是它的缺点,就是可以把局部变量驻留在内存中,可以避免使用全局变量。...全局变量在每个模块都可调用,这势必将是灾难性的。(所以推荐使用私有的,封装的局部变量。) 一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同!...javascript的垃圾回收原理 (1)、在javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收; (2)、如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收...函数里放匿名函数,则产生了闭包 七、在循环中直接找到对应元素的索引 <!
打开的过程时间可能会很长,主要是要对dump进行预处理,计算什么的,注意 这个过程不能点skip,否则就不太好定位大文件 直接打开.hprof文件 ?...4.2 堆遍历 Heap Walker 使用背景 在视图中找到增长快速的对象类型,在memory视图中找到Concurrenthashmap—点右键----选择“Show Selectiion In Heap...为了在这些内存对象中,找到泄漏的对象(应该被回收),可以在该对象上点击右键,选择“Use Selected Instances”缩小对象范围 ?...通过创建分析该对象 如果还不能定位内存泄露的地方,我们可以尝试使用Allocations页签,该页签显示对象是如何创建出来的; 我们可以从创建方法开始检查,检查所有用到该对象的地方,直到找到泄漏位置;...记录的生产量 Recorded Throughput 显示一段时间累计的JVM生产和释放的活动时间表。 垃圾回收活动 GC Activity 显示一张关于垃圾回收活动的活动时间表。
从用户的角度来看,用户在使用Android应用的时候,经常打开多个界面(活动),完成一系列的操作,比如:用户要在浏览器中查看新闻就需要点击新闻列表,打开新闻浏览界面;如果想把刚才看到的新闻分享给微信中的朋友...在默认情况下,当一个活动启动另一个活动时,两个活动都放置在同一个任务中,即压入同一个返回栈。当用户按下后退键,后压入的活动将从返回栈中弹出,前面压入的活动又显示在屏幕上。...(1) 运行状态 活动处于运行状态时,将位于栈顶,表示用户当前正在与活动进行交互操作,即:正在使用活动界面。在系统资源紧张的情况下,通常不会销毁处于运行状态的活动。...打开后在标签下面设置onClick属性(按钮触发的压下事件)的处理函数为:“startAnswerActivity”。...碎片在运行状态是可见的,并且它所归属的活动也正在运行。当活动进入暂停状态(由于另一个未占满屏幕的活动被添加到了栈顶),它上面的碎片也会进入暂停状态。当活动停止,它上面的碎片就进入停止状态。
在几乎所有虚拟内存实现的核心中发现的另一种方法是,最近使用的页面很可能在将来使用,而那些闲置了一段时间的页面可能不值得保留。 为了实现最后一种方法,内核维护一个“最近最少使用”(LRU)列表。...因此,不活动列表为即将离开的页面提供了第二种机会。但是它还扮演着另一个角色:管理极有可能只使用一次的页面。一个典型的例子是读取文件的过程。读取的页面可能会被处理,不再需要。...如果将这些页面“重新存储”回去,内核就会知道它正在推出有用的页面,并且可以进行调整以尝试避免这样做。 改善匿名LRU列表行为 Kim的补丁集解决了匿名和文件支持页面的处理方式之间的两个重要区别。...如果应用程序在许多匿名页面中出现page fault,则可能会将其他有用的页面从活动列表中推送到非活动列表中。但是,如果新page fault的页面仅使用一次,它们将不必要地推开其他更有用的页面。...由于匿名页面在回收时被写为交换,因此用于跟踪refault的影子LRU条目也可以写在此处,而不是保存在RAM中。
原因:onclick事件是异步触发的,当事件被触发时,for循环早已结束,此时变量i的值早已经是5。 解决:在闭包的帮助下,把每次循环的i值都封闭起来。...闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。...(2) 过渡使用闭包会占用大量内存。 4、this对象 在闭包内使用this对象将产生一些复杂的行为。...,而COM对象的垃圾收集机制采用的是引用计数策略,在基于引用计数策略的垃圾回收机制中,若两个对象之间形成了循环引用,则这两个对象都无法被回收。...,闭包会引用包含函数的所有活动对象,包含element,即使闭包不直接引用element,包含函数的活动对象中也仍然会保存一个引用,因此有必要把element元素设置为null,这样就能解除对DOM对象的引用
核心问题是移动浏览器(我正在为您浏览,Chrome和Safari)具有“帮助”功能,其中地址栏有时可见,有时隐藏,从而改变了视口的可见大小。...在上图中,应隐藏在屏幕底部的按钮。更糟糕的是,当用户首次访问移动设备上的网站时,地址栏将在顶部可见,因此默认的体验是破碎的体验。...在Wordsheet.io上学习时,您可以看到这一点。例如,尝试在移动浏览器上打开wordsheet.io/demo/V3Y 。无论地址栏是否可见,屏幕都将是视口的高度。...此外,通过在页面首次加载时将高度锁定在适当的位置,可以防止地址栏隐藏在使用该网站的过程中,从而带来尴尬的屏幕调整大小体验。...遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备上的局限性,最好避免使用它。
领取专属 10元无门槛券
手把手带您无忧上云