1
1
package com .lcodecore .twinklingrefreshlayout ;
2
2
3
+ import android .annotation .SuppressLint ;
3
4
import android .os .Handler ;
4
5
import android .support .v7 .app .AppCompatActivity ;
5
6
import android .os .Bundle ;
7
+ import android .view .ViewGroup ;
8
+ import android .view .ViewParent ;
6
9
import android .webkit .WebView ;
7
10
8
11
import com .lcodecore .tkrefreshlayout .header .progresslayout .ProgressLayout ;
@@ -13,6 +16,7 @@ public class WebActivity extends AppCompatActivity {
13
16
14
17
private WebView mWebView ;
15
18
19
+ @ SuppressLint ("SetJavaScriptEnabled" )
16
20
@ Override
17
21
protected void onCreate (Bundle savedInstanceState ) {
18
22
super .onCreate (savedInstanceState );
@@ -27,7 +31,7 @@ protected void onCreate(Bundle savedInstanceState) {
27
31
refreshLayout .setWaveHeight (240 );
28
32
refreshLayout .setOverScrollHeight (200 );
29
33
refreshLayout .setEnableLoadmore (false );
30
- header .setColorSchemeResources (R .color .Blue ,R .color .Orange ,R .color .Yellow ,R .color .Green );
34
+ header .setColorSchemeResources (R .color .Blue , R .color .Orange , R .color .Yellow , R .color .Green );
31
35
// header.setColorSchemeColors(0xff4674e7,0xff0ba62c);
32
36
33
37
mWebView = (WebView ) findViewById (R .id .webView );
@@ -61,10 +65,25 @@ protected void onResume() {
61
65
62
66
@ Override
63
67
protected void onDestroy () {
68
+ destroyWebView ();
69
+ super .onDestroy ();
70
+ }
71
+
72
+ /**
73
+ * 解决WebView持有mContext导致的内存泄漏问题
74
+ */
75
+ private void destroyWebView () {
64
76
if (mWebView != null ) {
65
- mWebView .destroy ();
66
- mWebView = null ;
77
+ ViewParent parent = mWebView .getParent ();
78
+ if (parent != null ) ((ViewGroup ) parent ).removeView (mWebView );
79
+ mWebView .stopLoading ();
80
+ mWebView .clearHistory ();
81
+ mWebView .clearView ();
82
+ mWebView .removeAllViews ();
83
+ try {
84
+ mWebView .destroy ();
85
+ } catch (Throwable e ) {
86
+ }
67
87
}
68
- super .onDestroy ();
69
88
}
70
89
}
0 commit comments