উত্তর:
এবং এখন পাঞ্চলাইন: সিস্টেম ক্যাশে ব্যবহার করুন।
URL url = new URL(strUrl);
URLConnection connection = url.openConnection();
connection.setUseCaches(true);
Object response = connection.getContent();
if (response instanceof Bitmap) {
Bitmap bitmap = (Bitmap)response;
}
ব্রাউজারের সাথে ভাগ করা, মেমরি এবং ফ্ল্যাশ-রোম ক্যাশে উভয়ই সরবরাহ করে।
grr। আমার ইচ্ছা আমার নিজের ক্যাশে ম্যানেজার লেখার আগে কেউ আমাকে জানিয়েছিল।
connection.getContent()
আমার জন্য সর্বদা একটি ইনপুট স্ট্রিম ফিরিয়ে দেয়, আমি কী ভুল করছি?
Bitmap response = BitmapFactory.decodeStream((InputStream)connection.getContent());
connection.setUseCaches
উপরের মার্জিত সমাধান সম্পর্কে : দুঃখের বিষয়, এটি কিছু অতিরিক্ত প্রচেষ্টা ব্যতীত কাজ করবে না। আপনার একটি ResponseCache
ব্যবহার ইনস্টল করতে হবে ResponseCache.setDefault
। অন্যথায়, HttpURLConnection
নীরবে setUseCaches(true)
কিছুটা উপেক্ষা করবে ।
FileResponseCache.java
বিস্তারিত জানার জন্য উপরের মন্তব্যগুলি দেখুন :
(আমি এটি একটি মন্তব্যে পোস্ট করব, তবে স্পষ্টতই আমার যথেষ্ট পরিমাণ SO কর্মফল নেই))
HttpResponseCache
, আপনি HttpResponseCache.getHitCount()
ফিরে আসতে পারেন 0. যাইহোক ক্যাচিংয়ের কাজ করতে, ব্যবহার করুন connection.addRequestProperty("Cache-Control", "max-stale=" + MAX_STALE_CACHE);
।
.getContent()
পদ্ধতি ব্যবহার করার সময় এইচইউসি ঝুলবে কারণ 304 টি প্রতিক্রিয়া আরএফসি স্ট্যান্ডার্ডের সাথে সম্পর্কিত কোনও প্রতিক্রিয়া সংস্থার নয়।
এগুলি বিটম্যাপে রূপান্তর করুন এবং তারপরে সেগুলি সংগ্রহের (হ্যাশম্যাপ, তালিকা ইত্যাদি) স্টোর করুন বা আপনি এসডিকার্ডে লিখতে পারেন।
প্রথম পদ্ধতির সাহায্যে অ্যাপ্লিকেশন স্পেসে এগুলি সংরক্ষণ করার সময়, আপনি এগুলি কোনও জাভা.লাং.আরএফ.সফট রেফারেন্সের চারপাশে মুড়ে রাখতে পারেন বিশেষত যদি তাদের সংখ্যা বড় হয় (যাতে তারা সঙ্কটের সময়ে আবর্জনা সংগ্রহ করা হয়)। এটি যদিও পুনরায় লোড করতে পারে।
HashMap<String,SoftReference<Bitmap>> imageCache =
new HashMap<String,SoftReference<Bitmap>>();
এগুলি এসডিকার্ডে লেখার জন্য পুনরায়লোডের প্রয়োজন হবে না; শুধু একটি ব্যবহারকারীর অনুমতি।
Uri
আপনি যে পথের রেফারেন্স ImageView
এবং অন্যান্য কাস্টম ভিউগুলিতে যেতে পারেন তা প্রাপ্ত করার পরামর্শ দেব । কারণ প্রতিবার আপনি compress
, গুণমান হারাবেন। অবশ্যই এটি ক্ষতির অ্যালগোরিদমের জন্য সত্য true এই পদ্ধতিটি আপনাকে এমনকি ফাইলের একটি হ্যাশ সংরক্ষণ করার অনুমতি দেয় এবং পরের বার আপনি সার্ভার If-None-Match
এবং ETag
হেডারগুলির মাধ্যমে ফাইলটির জন্য অনুরোধ করবেন ।
LruCache
দক্ষতার সাথে চিত্রগুলি ক্যাশে করতে ব্যবহার করুন । আপনি অ্যান্ড্রয়েড বিকাশকারী সাইটLruCache
থেকে সম্পর্কে পড়তে পারেন
আমি চিত্রগুলি ডাউনলোড করতে এবং অ্যান্ড্রয়েডে ক্যাশে করার জন্য নীচের সমাধানটি ব্যবহার করেছি। আপনি নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন:
পদক্ষেপ 1:
ক্লাস নামকরণ করুন ImagesCache
। আমি ব্যবহার করেছিSingleton object for this class
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
public class ImagesCache
{
private LruCache<String, Bitmap> imagesWarehouse;
private static ImagesCache cache;
public static ImagesCache getInstance()
{
if(cache == null)
{
cache = new ImagesCache();
}
return cache;
}
public void initializeCache()
{
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() /1024);
final int cacheSize = maxMemory / 8;
System.out.println("cache size = "+cacheSize);
imagesWarehouse = new LruCache<String, Bitmap>(cacheSize)
{
protected int sizeOf(String key, Bitmap value)
{
// The cache size will be measured in kilobytes rather than number of items.
int bitmapByteCount = value.getRowBytes() * value.getHeight();
return bitmapByteCount / 1024;
}
};
}
public void addImageToWarehouse(String key, Bitmap value)
{
if(imagesWarehouse != null && imagesWarehouse.get(key) == null)
{
imagesWarehouse.put(key, value);
}
}
public Bitmap getImageFromWarehouse(String key)
{
if(key != null)
{
return imagesWarehouse.get(key);
}
else
{
return null;
}
}
public void removeImageFromWarehouse(String key)
{
imagesWarehouse.remove(key);
}
public void clearCache()
{
if(imagesWarehouse != null)
{
imagesWarehouse.evictAll();
}
}
}
ধাপ ২:
DownloadImageTask নামে অন্য একটি শ্রেণি তৈরি করুন যা ব্যবহৃত হয় যদি বিটম্যাপ ক্যাশে পাওয়া যায় না তবে এটি এখান থেকে ডাউনলোড করবে:
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap>
{
private int inSampleSize = 0;
private String imageUrl;
private BaseAdapter adapter;
private ImagesCache cache;
private int desiredWidth, desiredHeight;
private Bitmap image = null;
private ImageView ivImageView;
public DownloadImageTask(BaseAdapter adapter, int desiredWidth, int desiredHeight)
{
this.adapter = adapter;
this.cache = ImagesCache.getInstance();
this.desiredWidth = desiredWidth;
this.desiredHeight = desiredHeight;
}
public DownloadImageTask(ImagesCache cache, ImageView ivImageView, int desireWidth, int desireHeight)
{
this.cache = cache;
this.ivImageView = ivImageView;
this.desiredHeight = desireHeight;
this.desiredWidth = desireWidth;
}
@Override
protected Bitmap doInBackground(String... params)
{
imageUrl = params[0];
return getImage(imageUrl);
}
@Override
protected void onPostExecute(Bitmap result)
{
super.onPostExecute(result);
if(result != null)
{
cache.addImageToWarehouse(imageUrl, result);
if(ivImageView != null)
{
ivImageView.setImageBitmap(result);
}
else if(adapter != null)
{
adapter.notifyDataSetChanged();
}
}
}
private Bitmap getImage(String imageUrl)
{
if(cache.getImageFromWarehouse(imageUrl) == null)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.inSampleSize = inSampleSize;
try
{
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
InputStream stream = connection.getInputStream();
image = BitmapFactory.decodeStream(stream, null, options);
int imageWidth = options.outWidth;
int imageHeight = options.outHeight;
if(imageWidth > desiredWidth || imageHeight > desiredHeight)
{
System.out.println("imageWidth:"+imageWidth+", imageHeight:"+imageHeight);
inSampleSize = inSampleSize + 2;
getImage(imageUrl);
}
else
{
options.inJustDecodeBounds = false;
connection = (HttpURLConnection)url.openConnection();
stream = connection.getInputStream();
image = BitmapFactory.decodeStream(stream, null, options);
return image;
}
}
catch(Exception e)
{
Log.e("getImage", e.toString());
}
}
return image;
}
পদক্ষেপ 3: আপনার Activity
বা থেকে ব্যবহারAdapter
দ্রষ্টব্য: আপনি Activity
ক্লাস থেকে url থেকে চিত্র লোড করতে চান । এর দ্বিতীয় কনস্ট্রাক্টর ব্যবহার করুন DownloadImageTask
, তবে আপনি যদি Adapter
প্রথম কনস্ট্রাক্টর ব্যবহার থেকে চিত্র প্রদর্শন করতে চান DownloadImageTask
(উদাহরণস্বরূপ আপনার একটি চিত্র রয়েছে ListView
এবং আপনি 'অ্যাডাপ্টার' থেকে চিত্রটি সেট করছেন)
ক্রিয়াকলাপ থেকে ব্যবহার করুন:
ImageView imv = (ImageView) findViewById(R.id.imageView);
ImagesCache cache = ImagesCache.getInstance();//Singleton instance handled in ImagesCache class.
cache.initializeCache();
String img = "your_image_url_here";
Bitmap bm = cache.getImageFromWarehouse(img);
if(bm != null)
{
imv.setImageBitmap(bm);
}
else
{
imv.setImageBitmap(null);
DownloadImageTask imgTask = new DownloadImageTask(cache, imv, 300, 300);//Since you are using it from `Activity` call second Constructor.
imgTask.execute(img);
}
অ্যাডাপ্টারের কাছ থেকে ব্যবহার করুন:
ImageView imv = (ImageView) rowView.findViewById(R.id.imageView);
ImagesCache cache = ImagesCache.getInstance();
cache.initializeCache();
String img = "your_image_url_here";
Bitmap bm = cache.getImageFromWarehouse(img);
if(bm != null)
{
imv.setImageBitmap(bm);
}
else
{
imv.setImageBitmap(null);
DownloadImageTask imgTask = new DownloadImageTask(this, 300, 300);//Since you are using it from `Adapter` call first Constructor.
imgTask.execute(img);
}
বিঃদ্রঃ:
cache.initializeCache()
আপনি আপনার অ্যাপ্লিকেশনটির প্রথম ক্রিয়াকলাপে এই বিবৃতিটি ব্যবহার করতে পারেন। একবার আপনি ক্যাশে শুরু করেছেন আপনি যদি ImagesCache
উদাহরণ ব্যবহার করেন তবে প্রতিবার এটি আরম্ভ করার দরকার নেই ।
আমি বিষয়গুলি ব্যাখ্যা করার ক্ষেত্রে কখনই ভাল নই তবে আশা করি এটি প্রাথমিকভাবে সাহায্য করবে যে কীভাবে ক্যাশে LruCache
এবং এর ব্যবহার ব্যবহার করতে হবে :)
সম্পাদনা করুন:
এখন একটি দিন সেখানে খুব বিখ্যাত নামে পরিচিত লাইব্রেরি হয় Picasso
এবং Glide
যা Android অ্যাপ্লিকেশন খুব দক্ষতার লোড ইমেজ ব্যবহার করা যাবে। অ্যান্ড্রয়েড এবং গ্লাইড ফর অ্যান্ড্রয়েডের জন্য এই খুব সহজ এবং দরকারী গ্রন্থাগার পিকাসো ব্যবহার করে দেখুন । আপনাকে ক্যাশে চিত্রগুলি নিয়ে চিন্তা করার দরকার নেই।
পিকাসো আপনার অ্যাপ্লিকেশনটিতে ঝামেলা-মুক্ত চিত্র লোড করার অনুমতি দেয় — প্রায়শই কোডের এক লাইনে!
গ্লাইড, ঠিক পিকাসোর মতোই, অনেক উত্স থেকে চিত্রগুলি লোড এবং প্রদর্শন করতে পারে, পাশাপাশি যখন ক্যাচিংয়ের যত্ন নেওয়া হয় এবং চিত্রের ম্যানিপুলেশনগুলি করার সময় কম মেমরির প্রভাব রাখে। এটি অফিশিয়াল গুগল অ্যাপস দ্বারা ব্যবহৃত হয়েছে (গুগল আই / ও 2015 এর অ্যাপ্লিকেশনটির মতো) এবং পিকাসোর মতোই জনপ্রিয়। এই সিরিজে, আমরা পিকাসোর ওভার গ্লাইডের পার্থক্য এবং সুবিধাগুলি অন্বেষণ করতে যাচ্ছি।
গ্লাইড এবং পিকাসোর পার্থক্যের জন্য আপনি ব্লগটিও দেখতে পারেন
if(cache == null)
আমার সমস্যার সমাধান করে তার জন্য উজ্জীবিত ! :)
একটি চিত্র ডাউনলোড করতে এবং মেমরি কার্ডে সংরক্ষণ করতে আপনি এটি এটি করতে পারেন।
//First create a new URL object
URL url = new URL("http://www.google.co.uk/logos/holiday09_2.gif")
//Next create a file, the example below will save to the SDCARD using JPEG format
File file = new File("/sdcard/example.jpg");
//Next create a Bitmap object and download the image to bitmap
Bitmap bitmap = BitmapFactory.decodeStream(url.openStream());
//Finally compress the bitmap, saving to the file previously created
bitmap.compress(CompressFormat.JPEG, 100, new FileOutputStream(file));
আপনার ম্যানিফেস্টে ইন্টারনেট অনুমতি যুক্ত করতে ভুলবেন না:
<uses-permission android:name="android.permission.INTERNET" />
আমি droidfu এর চিত্র ক্যাশে ব্যবহার বিবেচনা করব। এটি মেমরি এবং ডিস্ক-ভিত্তিক চিত্র ক্যাশে উভয়ই প্রয়োগ করে। আপনি এমন একটি ওয়েবআইমেজভিও পান যা ইমেজক্যাস লাইব্রেরির সুবিধা নেয়।
এখানে ড্রয়েডফু এবং ওয়েবআইমেজভিউয়ের সম্পূর্ণ বিবরণ দেওয়া হয়েছে: http://brainflush.wordpress.com/2009/11/23/droid-fu-part-2-webimageview- এবং-webgalleryadapter/
আমি সফ্টরিফারেন্স চেষ্টা করেছি, এন্ড্রয়েডে এরা খুব আক্রমণাত্মকভাবে পুনরায় দাবি করেছে যে আমি অনুভব করেছি যে সেগুলি ব্যবহার করার কোনও অর্থ নেই
SoftReference
এস সংগ্রহ করতে খুব আগ্রাসী is তারা তাদের LruCache
পরিবর্তে ব্যবহার করার পরামর্শ দেয় ।
থান্ডার খরগোশের পরামর্শ অনুসারে, কাজের জন্য ইমেজডাউনলোডার সেরা। আমি এখানে ক্লাসের কিছুটা ভিন্নতাও পেয়েছি:
http://theandroidcoder.com/utilities/android-image-download-and-caching/
উভয়ের মধ্যে প্রধান পার্থক্য হ'ল ইমেজডাউনলোডার অ্যান্ড্রয়েড ক্যাচিং সিস্টেমটি ব্যবহার করে এবং পরিবর্তিত ব্যক্তি অভ্যন্তরীণ এবং বাহ্যিক স্টোরেজ ক্যাশেড হিসাবে ব্যবহার করে, ক্যাশেড চিত্রগুলি অনির্দিষ্টকালের জন্য রেখে দেয় বা ব্যবহারকারী ম্যানুয়ালি অপসারণ না করে। লেখক অ্যান্ড্রয়েড ২.১ এর সামঞ্জস্যের কথাও উল্লেখ করেছেন।
এটি জো-র একটি ভাল ক্যাচ। উপরের কোড উদাহরণে দুটি সমস্যা রয়েছে - একটি - প্রতিক্রিয়া অবজেক্টটি বিটম্যাপের উদাহরণ নয় (যখন আমার ইউআরএল একটি জেপিজি রেফারেন্স করে, যেমন http: \ Website.com \ image.jpg এর একটি
org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl $ LimitedInputStream)।
দ্বিতীয়ত, জো উল্লেখ করেছেন যে কোনও প্রতিক্রিয়া ক্যাশে কনফিগার করা ছাড়া কোনও ক্যাচিং ঘটে না। অ্যান্ড্রয়েড বিকাশকারীদের নিজস্ব ক্যাশে রোল করতে বাকি আছে। এটি করার জন্য এখানে একটি উদাহরণ দেওয়া আছে তবে এটি কেবল স্মৃতিতে ক্যাশে হয় যা সত্যিকার অর্থে সম্পূর্ণ সমাধান নয়।
http://codebycoffee.com/2010/06/29/using-responsecache-in-an-android-app/
ইউআরএল সংযোগ ক্যাচিং এপিআই এখানে বর্ণিত হয়েছে:
http://download.oracle.com/javase/6/docs/technotes/guides/net/http-cache.html
আমি এখনও মনে করি এটি এই রুটটিতে যাওয়ার একটি ঠিক সমাধান - তবে আপনাকে এখনও একটি ক্যাশে লিখতে হবে। মজার মত শোনাচ্ছে, তবে আমি বরং বৈশিষ্ট্যগুলি লিখি।
এ সম্পর্কে অ্যান্ড্রয়েডের অফিসিয়াল প্রশিক্ষণ বিভাগে একটি বিশেষ এন্ট্রি রয়েছে: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
বিভাগটি বেশ নতুন, প্রশ্ন জিজ্ঞাসা করার সময় এটি ছিল না।
প্রস্তাবিত সমাধানটি হ'ল একটি লুচিচি ব্যবহার করা। এই ক্লাসটি হানিকম্বের সাথে চালু হয়েছিল, তবে এটি সামঞ্জস্য লাইব্রেরিতে অন্তর্ভুক্ত রয়েছে।
আপনি সর্বাধিক সংখ্যা বা এন্ট্রি সেট করে একটি LruCache শুরু করতে পারেন এবং সীমা ছাড়িয়ে গেলে এটি স্বয়ংক্রিয়ভাবে সেগুলি আপনার নিজের অনুসারে বাছাই করে এবং কম ব্যবহার করা এগুলি সাফ করে দেবে। তা ছাড়া এটি সাধারণ মানচিত্র হিসাবে ব্যবহৃত হয়।
অফিসিয়াল পৃষ্ঠা থেকে নমুনা কোড:
private LruCache mMemoryCache;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// Get memory class of this device, exceeding this amount will throw an
// OutOfMemory exception.
final int memClass = ((ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE)).getMemoryClass();
// Use 1/8th of the available memory for this memory cache.
final int cacheSize = 1024 * 1024 * memClass / 8;
mMemoryCache = new LruCache(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// The cache size will be measured in bytes rather than number of items.
return bitmap.getByteCount();
}
};
...
}
public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
if (getBitmapFromMemCache(key) == null) {
mMemoryCache.put(key, bitmap);
}
}
public Bitmap getBitmapFromMemCache(String key) {
return mMemoryCache.get(key);
}
পূর্বে সফ্টরাইফারেন্সগুলি একটি ভাল বিকল্প ছিল, তবে আর নয়, অফিসিয়াল পৃষ্ঠা থেকে উদ্ধৃত:
দ্রষ্টব্য: অতীতে, একটি জনপ্রিয় মেমরি ক্যাশে প্রয়োগকরণ ছিল একটি সফ্টরফারেন্স বা WeakReferences বিটম্যাপ ক্যাশে, তবে এটি প্রস্তাবিত নয়। অ্যান্ড্রয়েড ২.৩ (এপিআই স্তর 9) থেকে শুরু করে আবর্জনা সংগ্রহকারী নরম / দুর্বল রেফারেন্স সংগ্রহ করার সাথে আরও আক্রমণাত্মক যা তাদের মোটামুটি অকার্যকর করে তোলে। এছাড়াও, অ্যান্ড্রয়েড 3.0.০ (এপিআই লেভেল ১১) এর আগে, বিটম্যাপের ব্যাকিং ডেটা দেশীয় মেমরিতে সংরক্ষণ করা হয়েছিল যা অনুমানযোগ্য পদ্ধতিতে প্রকাশিত হয় না, সম্ভবত কোনও অ্যাপ্লিকেশনটি সংক্ষিপ্তভাবে তার স্মৃতি সীমা এবং ক্র্যাশ ছাড়িয়ে যায়।
ব্যবহার করার কথা বিবেচনা ইউনিভার্সাল ভাবমূর্তি লোডার গ্রন্থাগার দ্বারা সার্জি Tarasevich । এটি সঙ্গে আসে:
ইউনিভার্সাল ইমেজ লোডার নীচের ক্যাশে কনফিগারেশন সহ ডাউনলোড করা চিত্রগুলির জন্য বিশদ ক্যাশে পরিচালনার মঞ্জুরি দেয় :
UsingFreqLimitedMemoryCache
: কমপক্ষে ঘন ঘন ক্যাশে আকার সীমা ছাড়িয়ে গেলে ব্যবহৃত বিটম্যাপটি মুছে ফেলা হয়।LRULimitedMemoryCache
: কমপক্ষে সম্প্রতি যখন ক্যাশের মাপ সীমা অতিক্রম হওয়ার সাথে সাথে ব্যবহার বিটম্যাপ মুছে ফেলা হয়।FIFOLimitedMemoryCache
: ক্যাশে আকার সীমা ছাড়িয়ে গেলে মুছে ফেলার জন্য ফিফোর নিয়ম ব্যবহার করা হয়।LargestLimitedMemoryCache
: বৃহত্তম ক্যাশে আকার সীমা ছাড়িয়ে গেলে বিটম্যাপটি মোছা হয়।LimitedAgeMemoryCache
: এর বয়স নির্ধারিত মানের থেকে বেশি হলে ক্যাশেড বস্তুটি মোছা হয় ।WeakMemoryCache
: বিটম্যাপের কেবল দুর্বল উল্লেখ সহ একটি মেমরি ক্যাশে।একটি সাধারণ ব্যবহারের উদাহরণ:
ImageView imageView = groupView.findViewById(R.id.imageView);
String imageUrl = "http://site.com/image.png";
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
imageLoader.displayImage(imageUrl, imageView);
এই উদাহরণটি ডিফল্ট ব্যবহার করে UsingFreqLimitedMemoryCache
।
আসলে আমার পক্ষে যা কাজ করেছিল তা ছিল আমার প্রধান শ্রেণিতে রেসপন্স ক্যাশে সেট করা:
try {
File httpCacheDir = new File(getApplicationContext().getCacheDir(), "http");
long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
HttpResponseCache.install(httpCacheDir, httpCacheSize);
} catch (IOException e) { }
এবং
connection.setUseCaches(true);
বিটম্যাপ ডাউনলোড করার সময়।
http://practicaldroid.blogspot.com/2013/01/utilizing-http-response-cache.html
অ্যান্ড্রয়েডের জন্য গুগলের লিবস ইমেজ এবং ফাইল ক্যাশে পরিচালনা করার জন্য একটি দুর্দান্ত লাইব্রেরি রয়েছে।
আমি কিছু সময়ের জন্য এই সাথে কুস্তি ছিল; সফ্টরাইফারেন্স ব্যবহার করে উত্তরগুলি খুব দ্রুত তাদের ডেটা হারাবে। একটি অনুরোধক্যাচে তাত্ক্ষণিকভাবে প্রস্তাব দেওয়া উত্তরগুলি খুব অগোছালো ছিল, প্লাস আমি কখনই একটি পূর্ণ উদাহরণ খুঁজে পাইনি।
তবে ইমেজডাউনলোডার জাভা আমার জন্য আশ্চর্যজনকভাবে কাজ করে। সক্ষমতা না পৌঁছানো বা শুদ্ধ সময় শেষ হওয়ার আগ পর্যন্ত এটি হ্যাশম্যাপ ব্যবহার করে, তারপরে জিনিসগুলি একটি সফ্টরফেরেন্সিতে স্থানান্তরিত হয়, যার ফলে উভয় বিশ্বের সেরা ব্যবহার করে।
আমি IGNITION কে পরামর্শ দিচ্ছি যে এটি ড্রয়েড ফু এর চেয়েও ভাল
https://github.com/kaeppler/ignition
https://github.com/kaeppler/ignition/wiki/Sample-applications
এমনকি পরে উত্তর, কিন্তু আমি একটি অ্যান্ড্রয়েড ইমেজ ম্যানেজার লিখেছি যা স্বচ্ছভাবে ক্যাশে পরিচালনা করে (মেমরি এবং ডিস্ক)। কোডটি গিথুব https://github.com/felipecsl/Android- আইমেজ ম্যানেজারে রয়েছে
দেরিতে উত্তর, তবে আমি বুঝতে পেরেছিলাম যে আমার সাইটে আমার একটি লিঙ্ক যুক্ত করা উচিত কারণ আমি কীভাবে অ্যান্ড্রয়েডের জন্য একটি চিত্র ক্যাশে তৈরি করতে পারি তার একটি টিউটোরিয়াল লিখেছি: http://squarewolf.nl/2010/11/android-image-cache/ আপডেট: দ্য উত্সটি পুরানো হওয়ায় পৃষ্ঠাটি অফলাইনে নেওয়া হয়েছে। আমি ইগনিশন ব্যবহারের পরামর্শে @elenasys এ যোগদান করি ।
সুতরাং এই সমস্ত লোকদের যারা এই প্রশ্নে হোঁচট খাচ্ছে এবং এর সমাধান খুঁজে পেলেন না: আশা করি আপনি উপভোগ করবেন! = D:
দেরীতে উত্তর তবে আমি মনে করি এই লাইব্রেরিটি ক্যাচিং চিত্রগুলিতে অনেক সহায়তা করবে: https://github.com/crypticminds/ColdStorage ।
@LoadCache (R.id.id_of_my_image_view, "URL_to_downlaod_image_from) দিয়ে ইমেজভিউটিকে সহজেই বর্ননা করুন এবং এটি চিত্রটি ডাউনলোড এবং এটি চিত্রের দৃশ্যে লোড করার যত্ন নেবে। আপনি একটি স্থানধারক চিত্র এবং লোড অ্যানিমেশনটিও নির্দিষ্ট করতে পারেন।
টীকাটির বিশদ ডকুমেন্টেশন এখানে উপস্থিত রয়েছে: - https://github.com/crypticminds/ColdStorage/wiki/@LoadImage-annotation