2

私は、任意の数のユーザー定義ビューを処理する Android アプリに取り組んでいます。ビューは非常に単純で軽量な場合もあれば、非常に複雑でインスタンス化に比較的長い時間がかかる場合もあります。

バックグラウンド スレッドを使用してこれらのビューの一部をプリキャッシュし、ユーザーがあるビューから別のビューに切り替えたときの応答性を向上させたいと考えています。ビューごとに優先順位を設定して、キャッシュに追加する順序またはキャッシュから削除する順序を決定する方法があります。

私の問題は、メモリが不足しているときを判断する必要があることです。MemoryInfo使用可能なメモリ量を判断するために使用できると思います。しかし、しきい値を設定するための適切な経験則はありますか? どの時点で、追加のビューのキャッシュを停止する必要がありますか? 優先度の低いビューをキャッシュから削除することをどの時点で検討する必要がありますか?

4

2 に答える 2

0

私が読んだことから、私が気にする必要があるメモリ制限は、デバイスで利用可能な合計メモリではなく、Dalvik ヒープ制限です。このプロセスを使用して、現在のヒープ使用率を取得します。

Java.Lang.Runtime rt = Java.Lang.Runtime.GetRuntime();
long heapused = rt.TotalMemory() - rt.FreeMemory();
long heapmax = rt.MaxMemory();
double ratio = (double)heapused / (double)heapmax;

使用率が低い場合は積極的に事前キャッシュし、使用率が高い場合は積極的にキャッシュをクリアします。

于 2013-05-01T22:47:08.057 に答える
0

普遍的な答えはないと思います。

一般に、UI の構築方法、ユーザーがビューを操作する方法、および画面に収まるビューの数 (高さが可変であっても) によって異なります。

Android が ListView/Adapter の組み合わせでビューを作成/事前キャッシュする方法で、いくつかのテンプレートを確認できます。

AbsListView の実装

于 2013-04-24T19:28:13.783 に答える