android - অ্যাপ্লিকেশন প্রসঙ্গে ইমেজ লোড গ্লাইড



performance android-glide (1)

আমি আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে চিত্র লোডিংয়ের জন্য গ্লাইড ব্যবহার করছি, কোনও ক্র্যাশ এড়াতে আমি অ্যাপ্লিকেশন প্রসঙ্গে চিত্রগুলি লোড করছি। অ্যাপ্লিকেশন এবং মেমরির পারফরম্যান্সে এর প্রভাব কী হবে?


অ্যাপ্লিকেশন এবং মেমরির পারফরম্যান্সে এর প্রভাব কী হবে?

গ্লাইড একটি কারণে অনেকগুলি। পদ্ধতি প্রদান করে: এটি জীবনচক্র অনুসরণ করে।

ক্রিয়াকলাপে ক্রিয়াকলাপে যুক্ত হওয়া একটি Fragment কল্পনা করুন। এটির onCreateView পদ্ধতিতে এটি 3MB চিত্রের গ্লাইড লোড শুরু করে। এখন, যদি ব্যবহারকারী পিছনের বোতামটি টিপায় এবং টুকরোটি সরানো হয় বা পুরো ক্রিয়াকলাপ বন্ধ হয়ে যায়?

  • আপনি যদি with(getActivity().getApplicationContext()) ব্যবহার with(getActivity().getApplicationContext()) কিছুই হবে না, সমস্ত 3MBs ডেটা ডাউনলোড হয়ে যায় এবং তারপরে ডিকোড করা, ক্যাশে করা হয়, এমনকি চিত্রবিউতে সেট করা থাকে, যা পরে আবর্জনা সংগ্রহ করা হয়, কারণ এর একমাত্র রেফারেন্সটি ছিল অভ্যন্তরীণ গ্লাইড।
  • আপনি যদি with((Fragment)this) টুকরো with((Fragment)this) ব্যবহার with((Fragment)this) গ্লাইড ফ্রেগমেন্টের জীবনচক্র ইভেন্টগুলিতে সাবস্ক্রাইব করে এবং ফ্রেগমেন্টটি বন্ধ হওয়ার সাথে সাথে, কোনও বকেয়া অনুরোধটি বিরতি দেওয়া উচিত; এবং ধ্বংস হয়ে গেলে, সমস্ত মুলতুবি থাকা অনুরোধগুলি সাফ হয়ে যায়। এর অর্থ হল যে চিত্র ডাউনলোডটি মাঝপথে থামবে এবং সেই মৃত ফ্রেগমেন্ট দ্বারা আর কোনও সংস্থান ব্যবহার করা হবে না।
  • যদি আপনি with(getActivity()) ব্যবহার with(getActivity()) গ্লাইড ক্রিয়াকলাপের জীবনচক্র ইভেন্টগুলিতে সাবস্ক্রাইব করে এবং উপরের মতো একই জিনিস ঘটে, তবে কেবল তখনই কার্যকলাপটি বন্ধ বা ধ্বংস হয়।

সুতরাং সবচেয়ে ভাল অনুশীলন হ'ল অব্যবহৃত অনুরোধের পরিপূর্ণতা এড়াতে নিকটতম সম্ভাব্য প্রসঙ্গ / খণ্ড ব্যবহার করা! (বোঝা থামানোর জন্য একটি ম্যানুয়াল Glide.clear(ImageView|Target) : Glide.clear(ImageView|Target) )

অনুশীলনে এটি প্রয়োগ করার জন্য সম্ভব হলে with(this) ব্যবহার করার চেষ্টা করুন, তবে যখন এটি অ্যাডাপ্টারের মতো নয়, বা কেন্দ্রীয়ভাবে চিত্র লোডিং পদ্ধতির মতো, একটি RequestManager glide আর্গুমেন্ট হিসাবে পাস করুন এবং glide.load(... , উদাহরণ স্বরূপ:

static loadImage(RequestManager glide, String url, ImageView view) {
    glide.load(url).into(view);
}

বা অ্যাডাপ্টারে:

class MyAdapter extends WhichEveryOneYouUse {
    private final RequestManager glide;
    MyAdapter(RequestManager glide, ...) {
        this.glide = glide;
        ...
    }
    void getView/onBindViewHolder(... int position) {
        // ... holder magic, and get current item for position
        glide.load... or even loadImage(glide, item.url, holder.image);
    }
}

এবং এগুলি ক্রিয়াকলাপ / টুকরা থেকে ব্যবহার করুন:

loadImage(Glide.with(this), url, findViewById(R.id.image));
// or
list.setAdapter(new MyAdapter(Glide.with(this), data));





android-glide