2

Javascriptファイルを使用して画像を読み込むHTMLファイルをWebViewに読み込みます。html ファイルを Web ビューにロードするたびに、Activity Monitor でメモリの増加が表示されます。Webview を解放しても、メモリは解放されません。

Webview でリソースをキャッシュしていません。しかし、計測器を使用してメモリを分析すると、画像リソースがメモリにキャッシュされていて、解放されていないことがわかります。

同じ HTML ファイルを Safari ブラウザで読み込もうとしたところ、同じ動作が見つかりました。

誰かが私が行方不明になっている場所を案内してもらえますか? WebView へのメモリ読み込みを最適化するにはどうすればよいですか?

4

2 に答える 2

1

アプリのメモリ パフォーマンスのプロファイリングにアクティビティ モニターを使用しないでください。

Instrumentsアプリと、Allocations や Leaks など、Instruments アプリが提供するさまざまなメモリ関連ツールを使用します。その後、アプリが本当にリークしているかどうかを判断できます。

于 2012-04-24T02:18:24.577 に答える
0

WebView でのキャッシュを回避する方法をさらに入力します。

以下のコードを使用してキャッシュを削除しています。

    [[NSURLCache sharedURLCache] setMemoryCapacity:0];
    [[NSURLCache sharedURLCache] setDiskCapacity:0];


    WebPreferences *the_pPrefs = [m_pWebView preferences];
    [the_pPrefs setCacheModel:WebCacheModelDocumentViewer];
    [the_pPrefs setUsesPageCache:NO];
    [m_pWebView setResourceLoadDelegate:self];

私も以下のデリゲートメソッドでリソースロードリクエストを処理しています。

- (NSURLRequest *)webView:(WebView *)sender 
            resource:(id)identifier 
     willSendRequest:(NSURLRequest *)aRequest 
    redirectResponse:(NSURLResponse *)redirectResponse 
      fromDataSource:(WebDataSource *)dataSource
{
      NSURL * url = [aRequest URL];
      NSURLRequest * cachelessRequest = [NSURLRequest requestWithURL:url    cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100];
      return cachelessRequest;
}

キャッシングを避けるために正しいことをしているといいのですが。あわせてご意見をお聞かせください。

于 2012-04-24T07:08:10.173 に答える