بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
دانلود عکس با Bitmap
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
با سلام
من در قسمتهای مختلف برنامم که یه آپ آموزشی هست و اطلاعاتشو به صورت جیسون از سرور میگیرم.
بیشتر این اطلاعات همراه با عکس هست و من در اکثر جاها به وسیله لیست ویو اطلاعات رو میگیرم. و یرای همین هم با 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
کسی میدون چکار باید کنم و آیا روش دیگه ای هست بهتر باشه راهنماییم کنید لطفا..
پاسخها 1
خب آقا مسعود من استفاده کردم ولی کنده..یا اصلا برای من اون عکسهارو نمیاره بالا!!!!
Picasso.with(mContext).load(gallery.get(position).getGalleryAddres()).into(holder.imageView);
من اینجوری استفاده کردم.
نظرات
غیر از پیکاسو glide و ion هم هستن. اما فکر نکنم پیکاسو مشکلی داشته باشه. احتمالا عکس هاتون سنگینه یا سرعت نتتون کمه
اون url هایی رو که به ورودی پیکاسو میدید رو لاگ کنید بعد همونارو توی مرورگر کپی کنید ببینید عکساتون میاد یا نه . حواستونم باشه url کامل بهش بدید.
توی یکی از لاگ هایی که بالا گذاشتی نوشته permission denied . اگر روی مارشمالو اجرا میکنی حتما از run time permission استفاده کن.
آره درسته عکسهای سمت سرورم خیلی سنگین بودن..ولی این نکته اخری رو اصلا متوجه نشدم. میشه دقیق تر بگین.
توی لاگ هایی که بالا گذاشتی اخریشون نوشته permission denied. فکر میکنم از اندروید ۶ استفاده میکنی . در اندروید ۶ دسترسی ها باید به صورت runtime از کاربر پرسیده بشن. میتونید توی اینترنت سرچ کنید anroid 6 runtime permission
نه من از اندروید4 دارم استفاده میکنم...
نه من از اندروید4 دارم استفاده میکنم...
sdk ات چنده؟
پیکاسو خوبه اما یه مشکلی که هست با هر بار اسکرول دانلود میشه
با هر بار اسکرول دانلود نمیشه. در حالت عادی پیکاسو عکس ها رو کش میکنه و فقط دفعه ی اول اونهارو دانلود میکنه. مگر اینکه بهش بگید عکس هارو کش نکنه
آقا یه مسئله ای...اگر آدرس لینک عکسم عبارت فارسی داشته باشه پیکاسو عکس رو لود نمیکنه درسته؟
تاحالا امتحان نکردم
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات