1: 简介原理
Android 的 Settings 其实自身就带有后台流量控制的功能, 其实也是通过 Iptables 实现的。 Github上的一些开源的流量控制软件例如 aFwall也是通过Iptables实现的。
多次提到Iptables, 简单的理解就是防火墙的客户端。
Iptables的更新比较快, 文档更新比较慢, 碰到一些新的属性, 网上很难找到相应的介绍, 推荐看源码, 源码上一般都会有相关的注释。 推荐一篇比较新的文章.
2 : Android的后台流量限制
Android 这个后台流量限制功能做的比较取巧, 例如: 限制了 A 应用连接移动网络, Iptables 其实就插入一条规则限制 A 的联网。 这个时候如果A后台想要联网, 则会无法获取网络。 但是当你打开应用A的时候, 这个时候其实系统偷偷的删除了刚才Iptables插入的规则, 所以切换到前台的时候, A 又可以联网了。 当A又切换到后台, 则再次插入一条限制A联网的规则。
整个的操作流程是: framework -> netd -> iptables