استفاده از دیزاین پترن singleton در RequestQueue ها

پرسیده شده
فعالیت 1054 روز پیش
دیده شده 348 بار
0

با سلام 

میخواستم بدون برای استفاده کردن RequestQueue ها در داخل یک کلاس بصورت Singleton استفاده کنیم خوبه ؟

 

و من این کلاس رو از خود گوگل گرفتم و میخواستم بدون وقتی این کلاس ساخته شدش ایا لازم در کلاس GsonRequest هم در کانستراکتور RequestQueue مقدار دهی بشه یا RequestQueue رو حذف کنیم و فقط باید بصورت instance variable بیایم تعریف کنیم ؟  یا جوری دیگه استفاده میشه ؟

 

اینم کلاس MySingleton :

 

public class MySingleton {
    private static MySingleton instance;
    private RequestQueue requestQueue;
    private ImageLoader imageLoader;
    private static Context context;

    private MySingleton(Context context){
        this.context = context;
        requestQueue = getRequestQueue();

        imageLoader = new ImageLoader(requestQueue,
                new ImageLoader.ImageCache() {
            private final LruCache<String,Bitmap> cache = new LruCache<>(20);
                    @Nullable
                    @Override
                    public Bitmap getBitmap(String url) {
                        return cache.get(url);
                    }

                    @Override
                    public void putBitmap(String url, Bitmap bitmap) {
                        cache.put(url,bitmap);
                    }
                });
    }

    public static synchronized MySingleton getInstance(Context context){
        if (instance == null){
            instance = new MySingleton(context);
        }
        return instance;
    }
    private RequestQueue getRequestQueue() {
        if (requestQueue == null){
            requestQueue = Volley.newRequestQueue(context.getApplicationContext());
        }
        return requestQueue;
    }

    public <T> void addToRequestQueue(Request<T> request){
        getRequestQueue().add(request);

    }

    public ImageLoader getImageLoader(){
        return imageLoader;
    }
}

 

 

 

فایل پیوست

بهروز البرزی
بهروز البرزی

17 خرداد 00

0
حذف شده

سلام وقت بخیر بهروز جان 

 

در برنامه نویسی راه حل های زیادی هست و این بسته به پروژه شماست که انتخاب کنید از چه راه حلی برید .

بله اگر اپلیکیشن ما مدام از نتورک استفاده میکنه بهتر هست از دیزاین پترن singleton استفاده کنم.

درمورد سوال دوم بهر حال لازم هست requestQueue رو مقدار دهی کنیم وگرنه با ارور null pointer مواجه میشیم.

نکته ای که هست از اونجایی که ممکن هست sample های خود گوگل با اموزش کمی متفاوت باشند(به دلیل استفاده های دیگر) پیشنهاد میکنم طبق اموزش جلو برید. و موردی که هست در اکثر مواقع ما از لایبرری Retrofit استفاده میکنیم به این دلیل که بیشترین سازگاری رو با لایبرری های دیگه داره پس اینکه خودتون رو زیاد درگیر Volley کنین پیشنهاد نمیکنم و صرفا همین که اشناییتی داشته باشید کفایت میکنه.

 

 

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

18 خرداد 00

حذف شده
ممـــــنون پوریا جان بازم بابت راهنمایت :)
بهروز البرزی

18 خرداد 00

حذف شده
خواهش میکنم
پوریا شفیعی

18 خرداد 00