2

フラグメントと Web ビューに関するコードの問題を特定するのに役立つことがあります。他のスレッドでいくつかのソリューションを実装しようとしましたが、うまくいきませんでした。内部で WebView を作成せずに、この同じフラグメントを置き換えてテストしましたが、リークはありません。何か案は?そうでない場合、誰かが別の解決策を提示できますか?

ここに私のウェブビューフラグメントがあります:

public class CustomWebViewFragment extends PageFragment
{

private LinearLayout mWebContainer;
private WebView mWebView;


/**
 * public View onCreateView(LayoutInflater inflater, ViewGroup container,
 * Bundle savedInstanceState)
 */
@SuppressLint("SetJavaScriptEnabled")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    View v = inflater.inflate(R.layout.fragment_one, container, false);

    //If I comment this line out, there is no memory leak
    mWebView = new WebView(this.getActivity().getApplicationContext()); 

    return v;
}


/**
 * public void onDestroy()
 */
@Override
public void onDestroy()
{
    super.onDestroy();
    if (mWebView != null)
    {
        mWebView.loadUrl("about:blank");
        mWebView.destroy();
        mWebView = null;
    }
}

}

フラグメントを変更する方法は次のとおりです。

@Override
public void onNavSelected(String page)
{
    if (page != null && !page.equals(""))
    {
        System.gc();
        if (page.equalsIgnoreCase(GlobalConstants.PAGE_1))
        {
            mCurrent = getFragment(); // Creates a new fragment
            getSupportFragmentManager().beginTransaction()
                .replace(R.id.main_fragment, mCurrent).commit();
        }
    }
}
4

1 に答える 1