设计一个网页,如何在安卓上怎么让浏览器打开就是某个网页占用大量运行内存

这个问题具体表现为在移动端浏覽器上或android的webview上打开某个网页 调用摄像头拍照后无法实现图片上传,浏览器会自动刷新;这一问题无法100%重现但概率不低:

在如红米等低端安卓机上发生的概率会比较高。

用微信打开的网页出现这种情况的概率更大;

跟调取系统相册相比调用摄像头拍照出现这种情况的概率更大;

这个问题的原因主要是由于android底层设计缺陷引起的,让我们看看这一行为过程到底发生了些什么:

1.当用户从浏览器调用摄像头时Android系统会把系统进程从浏览器切换到摄像头(或者相册),这个时候浏览器进程变成了后台进程;

2.由于Android操作系统的设计缺陷此时浏览器进程的留存优先级(不被系统kill掉的优先级)与所有其它的后台进程是一样的,因此如果操作系统认为内存不足需要进行清理此时浏览器进程将鈈会得到任何保护 -- 很不幸,因为浏览器占用内存一般都比较大所以这次kill操作很容易kill掉浏览器进程;

3.当用户选择好图片返回浏览器时,浏覽器进程已经不复存在了按照Android的机制,浏览器进程将进行恢复试图恢复到kill之前的状态 -- 很不幸,恢复到什么状态是由浏览器来决定的洏浏览器不可能100%恢复到选择文件之前的那个状态。因此最终用户所看到的现象就是:选择文件完成后浏览器刷新了一下,而刷新到什么狀态由浏览器决定

对于这一问题,Android技术团队的态度是回避(将bug标记为obsolete) -- 可能是因为此bug涉及了OS底层进程切换的机制修复起来风险太高;而随著手机设备内存容量的增大,这一问题所发生的概率会越来越小

理解了问题的原因,对问题的一些表征也就有了合理的解释:低端安卓機的内存更小因此发生问题的频率更高;而与选择本地图片相比,调取系统摄像头所耗的内存更大(当拍摄有大量文字的图片时尤其如此)因此调取摄像头时问题发生的更加频繁;当用户已经开了很多别的App时,问题发生的概率更大

  • 所有的感受就想一条河流,如果我们压抑感受就像在河流中筑堤截流就会出现抑郁。必须让所有的感受流动起来流经我们...

  • 一、前言 有句话是这么说的,程序员对工作是时刻准備着的无论你是长假还是短假,只要有网你就躲不开客户。这样子当...

  • 一、NSThread、 GCD、 NSOperation 抽象封装度层次从低到高,抽象封装度越高使用越简單 二、...

我要回帖

更多关于 怎么让浏览器打开就是某个网页 的文章

 

随机推荐