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

دانلود عکس با Bitmap

mosafer  8 سال پیش  8 سال پیش
0 0

با سلام 

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

بیشتر این اطلاعات همراه با عکس هست و من در اکثر جاها به وسیله لیست ویو اطلاعات رو میگیرم. و یرای همین هم با CustomListAdapter کار میکنم. و به وسیله الگویی که برای هر سطر لیست ویو ایجاد کردم. 

حالا در این CustomListAdapter هام متد زیر رو برای گرفتن آدرس عکس و تبدیل اون به فرمت بیتمپ ایجاد کردم :

  private static Bitmap setImgLink(String img) {

        Log.i("LOG", "imageURL: " + img);

        URL url = null;
        try {
            url = new URL(img);
        }
        catch (MalformedURLException e1) {

            e1.printStackTrace();
        }
        Bitmap bmp = null;
        try {
            bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
        }
        catch (IOException e) {

            e.printStackTrace();
        }

        return bmp;

    }

و به وسیله این کد درون بدنه CustomListAdapter که همون متد getView هست این کد رو میذارم:

  new Thread(new Runnable() {
             @Override
            public void run() {
            	 
            	 final Bitmap tbmap = setImgLink(gallery.get(position).getGalleryAddres());
            	 holder.imageView.post(new Runnable() {
                     @Override
                    public void run() {
                    	 try{
                    	 holder.imageView.setImageBitmap(Bitmap.createScaledBitmap(tbmap,200, 100, false));
                    	 }catch (Exception e) {
        					// TODO: handle exception
        				}
                    	 }
                 });
             }
         }).start();    

ولی بیشتر مواقع خطا رخ میده.... 

اینم لاگ کتم : 

 09-15 06:12:12.955: I/WindowManager(3383): WIN DEATH: Window{4149c690 com.mosafer3766/com.mosafer3766.ActivityGallery paused=false}
09-15 06:12:12.955: I/WindowManager(3383): WIN DEATH: Window{41603a08 com.mosafer3766/com.mosafer3766.ActivityViewGallery paused=false}
09-15 06:12:12.955: I/WindowManager(3383): WIN DEATH: Window{414856c8 com.mosafer3766/com.mosafer3766.ActivityViewGallery paused=false}
09-15 06:12:12.955: I/WindowManager(3383): WIN DEATH: Window{415b77e8 com.mosafer3766/com.mosafer3766.ActivityViewGallery paused=false}
09-15 06:12:12.955: I/WindowManager(3383): WINDOW DIED Window{415a9e18 com.mosafer3766/com.mosafer3766.ActivityStart_Acsan paused=false}
09-15 06:12:12.955: W/InputDispatcher(3383): Attempted to unregister already unregistered input channel '415a9e18 com.mosafer3766/com.mosafer3766.ActivityStart_Acsan (server)'
09-15 06:12:12.955: W/WindowManager(3383): Failed looking up window
09-15 06:12:12.955: W/WindowManager(3383): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@4156fe98 does not exist
09-15 06:12:12.955: W/WindowManager(3383): 	at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7163)
09-15 06:12:12.955: W/WindowManager(3383): 	at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7154)
09-15 06:12:12.955: W/WindowManager(3383): 	at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1545)
09-15 06:12:12.955: W/WindowManager(3383): 	at android.os.BinderProxy.sendDeathNotice(Binder.java:417)
09-15 06:12:12.955: W/WindowManager(3383): 	at dalvik.system.NativeStart.run(Native Method)
09-15 06:12:12.955: I/WindowManager(3383): WIN DEATH: null
09-15 06:12:13.850: I/ActivityManager(3383): Process com.mosafer3766 (pid 3865) has died.
09-15 06:12:13.850: W/ActivityManager(3383): Force removing ActivityRecord{4146c818 com.mosafer3766/.ActivityGallery}: app died, no saved state
09-15 06:12:13.850: W/NetworkManagementSocketTagger(3383): setKernelCountSet(10041, 0) failed with errno -2
09-15 06:12:15.633: D/dalvikvm(3926): Not late-enabling CheckJNI (already on)
09-15 06:12:15.633: I/ActivityManager(3383): Start proc com.mosafer3766 for activity com.mosafer3766/.ActivityViewGallery: pid=3926 uid=10041 gids={3003, 1015}
09-15 06:12:18.168: W/NetworkManagementSocketTagger(3383): setKernelCountSet(10041, 1) failed with errno -2
09-15 06:12:19.011: I/Process(3383): Sending signal. PID: 3926 SIG: 3
09-15 06:12:19.011: I/dalvikvm(3926): threadid=3: reacting to signal 3
09-15 06:12:19.011: I/dalvikvm(3926): Wrote stack traces to '/data/anr/traces.txt'
09-15 06:12:19.864: W/ActivityManager(3383): Launch timeout has expired, giving up wake lock!
09-15 06:12:19.864: I/Process(3383): Sending signal. PID: 3926 SIG: 3
09-15 06:12:19.864: I/dalvikvm(3926): threadid=3: reacting to signal 3
09-15 06:12:19.864: I/dalvikvm(3926): Wrote stack traces to '/data/anr/traces.txt'
09-15 06:12:21.558: I/Process(3383): Sending signal. PID: 3926 SIG: 3
09-15 06:12:21.558: I/dalvikvm(3926): threadid=3: reacting to signal 3
09-15 06:12:21.558: I/dalvikvm(3926): Wrote stack traces to '/data/anr/traces.txt'
09-15 06:12:21.558: I/Process(3383): Sending signal. PID: 3926 SIG: 3
09-15 06:12:21.558: I/dalvikvm(3926): threadid=3: reacting to signal 3
09-15 06:12:22.417: I/dalvikvm(3926): Wrote stack traces to '/data/anr/traces.txt'
09-15 06:12:23.281: I/Process(3383): Sending signal. PID: 3926 SIG: 3
09-15 06:12:23.281: I/dalvikvm(3926): threadid=3: reacting to signal 3
09-15 06:12:24.190: I/dalvikvm(3926): Wrote stack traces to '/data/anr/traces.txt'
09-15 06:12:24.190: I/Process(3383): Sending signal. PID: 3926 SIG: 3
09-15 06:12:24.190: I/dalvikvm(3926): threadid=3: reacting to signal 3
09-15 06:12:25.078: E/dalvikvm(3926): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
09-15 06:12:25.078: I/Process(3383): Sending signal. PID: 3926 SIG: 3

 

کسی میدون چکار باید کنم و آیا روش دیگه ای هست بهتر باشه راهنماییم کنید لطفا..

 

0 0
واقعا کسی نیست یه راهنمایی کنه..این مشکل داره منو اذیت میکنه لطفا راهنمایی کنید (8 سال پیش)
+1 0
دوست عزیز برای لود کردن عکس در لیست بهتره از picasso استفاده کنی. من خودم استفاده میکنم عالی هست و سرعت خوبیم داره و کد نویسی کمتری هم داره (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
mosafer  8 سال پیش
0 0

خب آقا مسعود من استفاده کردم ولی کنده..یا اصلا برای من اون عکسهارو نمیاره بالا!!!!

 Picasso.with(mContext).load(gallery.get(position).getGalleryAddres()).into(holder.imageView);

 

من اینجوری استفاده کردم.

 

0 0
غیر از پیکاسو glide و ion هم هستن. اما فکر نکنم پیکاسو مشکلی داشته باشه. احتمالا عکس هاتون سنگینه یا سرعت نتتون کمه (8 سال پیش)
0 0
اون url هایی رو که به ورودی پیکاسو میدید رو لاگ کنید بعد همونارو توی مرورگر کپی کنید ببینید عکساتون میاد یا نه . حواستونم باشه url کامل بهش بدید. (8 سال پیش)
0 0
توی یکی از لاگ هایی که بالا گذاشتی نوشته permission denied . اگر روی مارشمالو اجرا میکنی حتما از run time permission استفاده کن. (8 سال پیش)
0 0
آره درسته عکسهای سمت سرورم خیلی سنگین بودن..ولی این نکته اخری رو اصلا متوجه نشدم. میشه دقیق تر بگین. (8 سال پیش)
0 0
توی لاگ هایی که بالا گذاشتی اخریشون نوشته permission denied. فکر میکنم از اندروید ۶ استفاده میکنی . در اندروید ۶ دسترسی ها باید به صورت runtime از کاربر پرسیده بشن. میتونید توی اینترنت سرچ کنید anroid 6 runtime permission (8 سال پیش)
0 0
نه من از اندروید4 دارم استفاده میکنم... (8 سال پیش)
0 0
نه من از اندروید4 دارم استفاده میکنم... (8 سال پیش)
0 0
sdk ات چنده؟ (8 سال پیش)
0 0
پیکاسو خوبه اما یه مشکلی که هست با هر بار اسکرول دانلود میشه (8 سال پیش)
+1 0
با هر بار اسکرول دانلود نمیشه. در حالت عادی پیکاسو عکس ها رو کش میکنه و فقط دفعه ی اول اونهارو دانلود میکنه. مگر اینکه بهش بگید عکس هارو کش نکنه (8 سال پیش)
0 0
آقا یه مسئله ای...اگر آدرس لینک عکسم عبارت فارسی داشته باشه پیکاسو عکس رو لود نمیکنه درسته؟ (8 سال پیش)
0 0
تاحالا امتحان نکردم (8 سال پیش)

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