Activity has leaked IntentReceiver com.android.qualcomm.browsermanagement.Browse

当你在用webview控件的时候,点击返回上一级界面的时候,此时可能会报unregisterReceiver()异常
Activity has leaked IntentReceiver com.android.qualcomm.browsermanagement.BrowserManagement$1@43061258 that was originally registered here. Are you missing a call to unregisterReceiver()? 

当发生这种异常时,很有可能是Activity使用了WebView,而退出Activity时没有把WebView的对象销毁。
网上搜索的做法是:在Activity中OnDestory()方法中调用WebView.destory()。这样可以避免此类异常的抛出。

接着运行后还会抛出一个error: Error: WebView.destroy() called while still attached! 

先大概解释下这个错误,这个错误从字面意思来说是当你结束webview的时候,Webview还依附在父控件下,使用解决这个问题,就是在WebView.destroy()前要解除他们之间的依附关系。

 

这时我的做法就是先在  super.onDestroy();
前面找到webview的父容器LinearLayout main = (LinearLayout)findViewById(R.id.main);,然后移除掉webview : main.removeView(mWebView)。

 

完整例子:

 @Override
 protected void onDestroy() {
  main.removeView(mWebView);
  super.onDestroy();
  mWebView.removeAllViews();
  mWebView.destroy();
 }

猜你喜欢

转载自baishou520.iteye.com/blog/2113397