4

現在、サーバーからの画像の読み込みにAndroid Queryライブラリを使用しています。

主な問題: 最初に画像を保存し、次にキャッシュから画像をロードしたい。ここで、 memCachefileCacheを使用したキャッシュ コントロールのオプションを見てきましたが、低速のインターネット接続と最小限のメモリ使用量のためにどちらを使用するのが良いかわかりませんでした。

私はおそらくいくつかの混乱を伴う次の解決策を持っています:

まず第一に、私はこのように使用しました:( memCachefileCacheの両方true)

aq.id(holder.prodImage).image(holder.prodImagePath, true, true, 0, R.drawable.no_image, aq.getCachedImage(R.drawable.no_image), AQuery.FADE_IN);

しかし、ここで彼は言ったif image is huge, avoid memory caching

しかし、ネットワークが遅く、メモリが十分でないときに問題が発生しました

次に、 Delay Image Loadingを試した後:

if(aq.shouldDelay(position, convertView, parent, holder.prodImagePath)){
    aq.id(holder.prodImage).image(R.drawable.no_image);
} else {
    aq.id(holder.prodImage).progress(view.findViewById(R.id.progressBar1)).image(holder.prodImagePath, false, true, 0, 0, null, AQuery.FADE_IN);
}

しかし、NullPointerException次のように投げます:

12-10 12:11:26.492: E/AndroidRuntime(23309): java.lang.NullPointerException
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.androidquery.util.Common.shouldDelay(Common.java:328)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.androidquery.util.Common.shouldDelay(Common.java:340)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.androidquery.AbstractAQuery.shouldDelay(AbstractAQuery.java:2389)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at com.salesman.fragments.ProductFragment$MyGridViewAdapter.getView(ProductFragment.java:423)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.AbsListView.obtainView(AbsListView.java:2477)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.makeAndAddView(GridView.java:1331)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.makeRow(GridView.java:331)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.fillDown(GridView.java:283)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.GridView.fillGap(GridView.java:243)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5549)
12-10 12:11:26.492: E/AndroidRuntime(23309):    at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4693)

この単純な問題にこのライブラリをどのように使用したか

解決策を教えてください。

あなたの助けに感謝します。

4

1 に答える 1

4

最後に、次のコードで解決策を得ました:

/* Settings of Image */
//set the max number of concurrent network connections, default is 4
AjaxCallback.setNetworkLimit(8);

//set the max number of icons (image width <= 50) to be cached in memory, default is 20
BitmapAjaxCallback.setIconCacheLimit(50);

//set the max number of images (image width > 50) to be cached in memory, default is 20
BitmapAjaxCallback.setCacheLimit(50);

aq = new AQuery(context);

/* Getting Images from Server and stored in cache */
aq.id(holder.prodImageView).progress(convertView.findViewById(R.id.progressBar1)).image(holder.prodImagePath, true, true, 0, R.drawable.no_image, null, AQuery.FADE_IN);

取得できず、問題がある場合は、ここにコメントしてください。

ありがとう。

于 2014-01-24T04:17:09.223 に答える