نمایش نتایج 1 تا 7 از 7

نام تاپیک: دوتا مشکل ، دوتا سوال

  1. #1
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    دوتا مشکل ، دوتا سوال

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

    خب سوال اینه :
    من توی برنامه ام از کلاسی که extends شده از AsyncTask برای ارتباط با php استفاده کردم .. خب برای بار اول خوبه مشکلی نیست .. اما وقتی من توی برنامه ام یه دکمه ای دارم که کاربر بزنه روش و دوباره اطلاعاتو از سرور بخونه جواب نمیده .. البته نه که نده .. یکی در میون جواب میده .. یه جایی خوندم خاصیت AsyncTask اینه که یکبار اجرا بشه .. اینو دقیق نفهمیدم .. الان مشکل من مربوط به این خاصیت میشه ؟
    و سوال دوم اینکه من با کدهای زیر وسط میشم به سرور و یکسری عکسو از سرور توی ایمیج باکش نشون میده و همزمان توی یک فایلی ذخیره می کنه .. عکس ها به دو صورت با کیفیت و بی کیفیت هستن .. بی کیفیتا رو میگیره و مشکلی نیست اما با کیفیت ها رو فورس کلوز می کنه .. توی اکلیپس می نویسه ارور فضا و جای خالی و اینا اما سر و ته عکسا همش 20 مگایایت و گوشی طرفای 3 گیگ فضای خالی داره .. مشکل از کجاست ؟

    public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;
    String pathsave;
    String nameimahe;
    boolean saveimg;
    Context c;
    public DownloadImageTask(ImageView bmImage,
    String pathsave,
    String nameimahe,
    boolean saveimg,
    Context c) {
    this.bmImage = bmImage;
    this.pathsave = pathsave;
    this.nameimahe = nameimahe;
    this.saveimg = saveimg;
    }

    @SuppressLint({ "ParserError", "ShowToast"})
    protected Bitmap doInBackground(String... urls) {
    String urldisplay = urls[0];
    Bitmap mIcon11 = null;
    /*StatFs stat = new StatFs(Environment.getExternalStorageDirectory().g etPath());
    double sdAvailSize = (double)stat.getAvailableBlocks()
    * (double)stat.getBlockSize();
    double gigaAvailable = sdAvailSize / 1073741824;

    if(gigaAvailable < 3){
    Toast.makeText(c.getApplicationContext(), "به علت نداشتن فضای خالی ، عکس ها قادر به بارگذاری شدن نیستند", 5000).show();
    }else{*/
    try {
    InputStream in = new java.net.URL(urldisplay).openStream();
    mIcon11 = BitmapFactory.decodeStream(in);

    if(saveimg){
    OutputStream outStream = null;
    File file = new File(pathsave, nameimahe + ".JPEG");
    try {
    outStream = new FileOutputStream(file);
    mIcon11.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
    outStream.flush();
    outStream.close();
    }
    catch(Exception e){}
    }else{}

    } catch (Exception e) {
    //Log.e("Error", e.getMessage());
    //e.printStackTrace();
    }
    //}


    return mIcon11;

    }

    protected void onPostExecute(Bitmap result) {
    bmImage.setImageBitmap(result);
    }

    }

  2. #2

    نقل قول: دوتا مشکل ، دوتا سوال

    سلام

    اول بذارید تشکر کنم از عنوان بسیار با محتوا و با مفهوم تاپیک !!!

    سوال اولتون رو نمیدونم

    ولی سوال دومتون، مربوط میشه به خطای Out of Memory

    به این معنی نیست که حافظه کم دارید، به این معنی هست که به دلیل کیفیت بالای عکسها، ظریفیت رم اختصاص داده شده به برنامتون پر شده

    این ظرفیت برای هر برنامه محدود هست و معمولا بین 32 تا 256 مگابایت هست

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

    شما ابتدا باید حجم و کیفیت عکس رو برای باز شدن توی برنامه بیارید پایین، و بعدش هم مدیریت حافظه کنید

    واسه خطای out of memory حوصله دارید این تاپیک رو بخونید شاید مفید واقع بشه

    https://barnamenevis.org/showthread.p...=1#post1972033

  3. #3

    نقل قول: دوتا مشکل ، دوتا سوال

    سلام
    جواب سوال اول:

    به طور کلی باید از هر شیء که از AsyncTask می گیرید، یک بار اجرا شود.

  4. #4
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    نقل قول: دوتا مشکل ، دوتا سوال

    نقل قول نوشته شده توسط poorman مشاهده تاپیک
    سلام

    اول بذارید تشکر کنم از عنوان بسیار با محتوا و با مفهوم تاپیک !!!

    سوال اولتون رو نمیدونم

    ولی سوال دومتون، مربوط میشه به خطای Out of Memory

    به این معنی نیست که حافظه کم دارید، به این معنی هست که به دلیل کیفیت بالای عکسها، ظریفیت رم اختصاص داده شده به برنامتون پر شده

    این ظرفیت برای هر برنامه محدود هست و معمولا بین 32 تا 256 مگابایت هست

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

    شما ابتدا باید حجم و کیفیت عکس رو برای باز شدن توی برنامه بیارید پایین، و بعدش هم مدیریت حافظه کنید

    واسه خطای out of memory حوصله دارید این تاپیک رو بخونید شاید مفید واقع بشه

    https://barnamenevis.org/showthread.p...=1#post1972033
    سلام
    اول بسیار ممنون بابت تشکری که از عنوان تاپیک کردی
    چشم .. سعی می کنم دفعه ی بعد عنوان درست و مستقیمی پیدا کنم

    و ممنونم بابت راهنمایی که کردی .. حتمن اون تاپیکو می خونم

  5. #5
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    نقل قول: دوتا مشکل ، دوتا سوال

    نقل قول نوشته شده توسط smemamian مشاهده تاپیک
    سلام
    جواب سوال اول:

    به طور کلی باید از هر شیء که از AsyncTask می گیرید، یک بار اجرا شود.
    سلام
    ممنون بابت جوابت .. تا اینجاشو متوجه شدم اماچطور می تونم وقتی روی دکمه ی رفرش می زنم دوباره اطلاعاتو از سرور بگیره ؟

  6. #6

    نقل قول: دوتا مشکل ، دوتا سوال

    نقل قول نوشته شده توسط hosseinaryai مشاهده تاپیک
    سلام
    ممنون بابت جوابت .. تا اینجاشو متوجه شدم اماچطور می تونم وقتی روی دکمه ی رفرش می زنم دوباره اطلاعاتو از سرور بگیره ؟
    2 راه دارید:

    1- شرطی بنویسید تا وقتی تابع onPostExecute به پایان نرسید، کاربر نتواند Refresh کند.

    2- استفاده از IntentService هست. یکی از مزیت هایی که IntentService نسبت به AsyncTask داره
    این هست که درخواست ها رو در صف خود می برد و تا یکی به پایان نرسید، بعدی رو اجرا نمی کند.

  7. #7
    کاربر دائمی آواتار hosseinaryai
    تاریخ عضویت
    مهر 1391
    محل زندگی
    بابل
    پست
    333

    نقل قول: دوتا مشکل ، دوتا سوال

    نقل قول نوشته شده توسط smemamian مشاهده تاپیک
    2 راه دارید:

    1- شرطی بنویسید تا وقتی تابع onPostExecute به پایان نرسید، کاربر نتواند Refresh کند.

    2- استفاده از IntentService هست. یکی از مزیت هایی که IntentService نسبت به AsyncTask داره
    این هست که درخواست ها رو در صف خود می برد و تا یکی به پایان نرسید، بعدی رو اجرا نمی کند.
    اوممم .. خب من منظورتو درست متوجه شدم .. یعنی اگه تابع onPostExecute کارش تموم بشه کاربر دوباره می تونه روی دکمه رفرش کلیک کنه .. پس به همین خاطره یکی در میان جواب میده ..
    اوکی .. ممنونم .. کمک بزرگی کردی

تاپیک های مشابه

  1. سوال: دوتا مشکل در C#‎.net
    نوشته شده توسط zamani.o در بخش C#‎‎
    پاسخ: 7
    آخرین پست: شنبه 09 دی 1391, 15:01 عصر
  2. سوال: کمک برای رفع دوتا مشکل که خیلی ها دارند
    نوشته شده توسط Farbod EZRaeL در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: شنبه 10 تیر 1391, 00:45 صبح
  3. مشکل با دوتا UpdateProgress در يک صفحه
    نوشته شده توسط b581102 در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: شنبه 15 تیر 1387, 09:53 صبح
  4. من از dataenvironment جهت ارتباط با sql server استفاده می کنم . ولی من دوتا مشکل دارم
    نوشته شده توسط alivafadarpour در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: شنبه 20 بهمن 1386, 06:39 صبح
  5. دوتا مشکل جدید !!
    نوشته شده توسط tux-world در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 1
    آخرین پست: دوشنبه 04 دی 1385, 12:29 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •