آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کرش در پروژه اسلایدر تصویر

hamed  11 سال پیش  10 سال پیش
+1 0

سلام دوستان. پروژه اسلایدر را در یک پروژه دیگه اضافه کردم و آن را در داخل یک صفحه دیگه قرار داده ولی متاسفانه در حال کار روی امولاتور کرش می کنه و خطای زیر را می دهد و روی گوشی هم صفحه بسته وی شه و به صفحه قبل بر می گردد. با توجه به اینکه حجم عکس ها کم است نمی دونم مشکل از کجاست.

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

کدها دقیقا مشابه کدهای آموزش است و به جز خود عکس ها که از عکس های ویدئو فوق العاده کوچکتر و کم حجم ترند فرقی بین این دو نیست. بخش های مربوط به دایره و ... هم در پروژه استفاده نشدند و صرفا خود عکس ها هست.

چیزی که مشخصه این خطا به هر حال از حافظه هست و باید احتمالا سایر اکتیویتی های قبلی را ببندم و فقط این اکتیویتی باز باشه تا حافظه بیشتری در دسترس باشه.

1- در خود این بخش راهی وجود داره که رم کمتری اشغال بشه؟ (مثلا استفاده از ترد ها یا ...)

2- چطوری می توان این خطا را پوشش داد به صورتی که منجر به کرش برنامه نشه و فقط از ورق خوردن تصویر جلوگیری کنه و یا برنامه به موقعیت خاصی هدایت بشه.

با تشکر

 

+1 0
متن سوال ویرایش شد. ظاهرا مشکل واقعا از حجم عکس هاست (مجموعه زیر یک مگ هستند) به هر حال لطفا سوالاتی که در ادامه پرسش مطرح کردم را پاسخ دهید. (11 سال پیش)
0 0
یه بررسی بکن ببین کد مربوط به حذف آیتم ها از ویو پیجر رو نوشتی یا نه !؟ (11 سال پیش)
+1 0
بله اون کد نوشته شده. همانطور که در بالا ذکر شده است کد دقیقا مشابه کد استاده. البته یک تفاوت عمده اینه که تو ذل یک برنامه دیگه نوشته شده و خود به خود بخشی از منابع سیستم را سایر بخش های برنامه اشغال می کنه. (11 سال پیش)
0 0
خوب کدتون رو بذارید اینجا یه نگاه بندازیم من خودم تو پروژه ای از ویو پیجر استفاده کردم ولی همچین مشکلی نبوده. (11 سال پیش)
+1 0
متاسفانه امکان درج کد یا ضمیمه کردن پروژه وجود نداره (پروژه شخصی نیست) ولی همانطور که در فوق اشاره کردم کد دقیقا مشابه کد اموزش ها است و حتی اسامی هم مشابه هستند! در اولین فرصت عکس ها را در خود پروژه استاد تست می کنم ببینم اونجا هم با این حجم عکس ها مشکلی هست یا نه. (11 سال پیش)
0 0
خوب شما کد مربوط به همین قسمت رو بذارید (11 سال پیش)
0 0
دوستان این سوال جواب نداره؟ با عکسای با حجم کمی بیشتر پروژه استاد هم کرش میکنه، پس مشکل از جای دیگس، لطفا اگه کسی میدونه راهنمایی کنه (10 سال پیش)
0 0
من از این لینک استفاده کردم به جای setImageResource از setImageBitmap (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
hamed  11 سال پیش
0 0

این هم کدها که خواسته شده بود. (در پاسخ جداگانه آورده شد تا اصل سوال حجیم به نظر نرسد.)

public class PicAdapter extends PagerAdapter {

    public ArrayList PicNumber;
    public ArrayList  imageTitles;


    public PicAdapter(ArrayList PicNumber, ArrayList imageTitles) {
        this.PicNumber = PicNumber;
        this.imageTitles = imageTitles;
    }


    @Override
    public int getCount() {
        return PicNumber.size();
    }


    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }


    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view = G.layoutInflater.inflate(R.layout.pager_item, null);
        ImageView image = (ImageView) view.findViewById(R.id.image);
        TextView text = (TextView) view.findViewById(R.id.text);
        image.setImageResource(PicNumber.get(position));
        text.setText(imageTitles.get(position));
        container.addView(view);
        return view;
    }


    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }

و این هم کدهای اکتیویتی:

       //final PageIndicator indicator = (PageIndicator) findViewById(R.id.indicator);

        ArrayList PicNumber = new ArrayList();
        ArrayList imageTitles = new ArrayList();

        for (int i = 0; i < 15; i++) {
            int id = G.context.getResources().getIdentifier("image" + i, "drawable", 
G.context.getPackageName()); PicNumber.add(id); imageTitles.add("Nice Nature #" + i); } // indicator.setIndicatorsCount(14); ViewPager pager = (ViewPager) findViewById(R.id.pagerViewer); pager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int index) {} @Override public void onPageScrolled(int startIndex, float percent, int pixel) { // indicator.setPercent(percent); Log.i("LOG", "Percent: " + startIndex + ", " + percent); // indicator.setCurrentPage(startIndex); } @Override public void onPageScrollStateChanged(int arg0) { } }); PicAdapter adapter = new PicAdapter(PicNumber, imageTitles); pager.setAdapter(adapter); }

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .