都已经是2022年末了,但手机浏览器到目前仍然不能算一个好的产品。主要原因除了互联网公司希望把内容和客户行为数据都留在自己的app里,还有一部分原因是这么多年过去,浏览器内核webkit本身也没有什么killer feature。日复一日的优化渲染效率也不现实,毕竟根据摩尔定律,每过一年半载 ,硬件性能就会增强一倍。
笔者曾经在工作中思考过如何对webkit进行优化,以便给应用层带来更好玩的功能。
当时还打算把这些脑洞想法一一实现后发表专利,但是时过境迁,种种原因没有继续下去。现在分享出来,贻笑大方。
1,手势标签
这个想法很简单,就是在手机浏览器上能够快速添加标签,不用找各种标签入口。对于标签查找也可以用手势呼出。
这部分的功能应用层就可以实现,并不用在webkit层进行支持。当然,这个手势操作其实从产品层面又需要考虑对手势的管理。感觉会引入更多的复杂性。
2,一种实现跨Android多平台的函数调用方法
这个想法是我工作中遇到的问题。许多Android厂商会在os内核中修改类对象的定义方式。比如 AudioTrack类,华为,小米,魅族的都不一样。这就会导致如果我们在代码中直接使用AudioTrack对象的话,在本机上测试没问题,但是在某些机器上出现内存溢出等错误。
这个问题抽象后如下:
比如华为手机os提供了公共音频类A供上层调用
Class A:
{
public:
int getXXX(){ return x; }
private:
int x;
int y;
}
而小米手机的公共音频类A的定义方式不同
Class A:
{
public:
int getXXX(){ return x; }
private:
int x;
int y;
int z;
}
那么,此时,如果应用层代码直接使用了A a对象,那么在某些手机上,当调用a.getXXX()时就可能发生出错。解决这种问题就需要使用placement new为A类申请内存,而不是依赖编译器进行分配。比如
int* buff = new(256);
memset(buff,0,256*sizeof(int));
A* a = new (buff)A()
这样使用a指针就能避免内存出错的问题
下期请见:
3,网页分类,块内分割
4,网页内容分块保存
5,用户自定义的网页排版算法
6,用户网页内容笔记(内容保存)
7,一种新奇网页加载显示的方式 (部分RenderTree中的子树,图片)