为什么Google会推荐此代码用于WebView调试?

时间:2015-07-22 08:02:31

标签: android google-chrome android-webview

根据可调试标志Google recommends the following code

启用WebView调试
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    if (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE)) {     
        WebView.setWebContentsDebuggingEnabled(true);
    }
}

这是否有副作用,因为&=运算符会重新分配flag字段?我假设在此调用之后应用程序标志减少到FLAG_DEBUGGABLE。为什么您希望此处的&=运算符代替&

2 个答案:

答案 0 :(得分:1)

是的,它是文档中的一个错误。代码坏了。除了ApplicationInfo.flags之外,它确实删除了FLAG_DEBUGGABLE以外的任何标记。正确的检查是getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE。此检查不会修改flags字段。

答案 1 :(得分:-1)

不,int delay = 1000; // 1 second int interval = 60000; int elapsed = 0; while (!worker.CancellationPending) { elapsed = 0; do { Thread.Sleep(delay); } while (elapsed < interval && !worker.CancellationPending); } e.Cancel = true; 表示&=只是将该标记从getApplicationInfo().flags = getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE设置为0

它就像1+=一样缩短了表达式。

将保留所有现有标志。