کند شدن اپلیکیشن
سلام
لطفا کمک کنید !
من یک برنامه آنلاین به سختی بعد دو هفته کارنوشتم و با تمام تکنیک های روز مثل ترد و async حتی همه فراخوانی ها ثبت و خوندن هامو از سمت سرور انجام دادم ولی باز هم برنامه من کنده و بعد از هفت هشت دقیقه کار روی فک کنین دیکه کوشی مثل note 3 هنگ میکنه و کند میشه ... چیزی که حالبه اینه که اولش مثل هلو کار میکنه ولی کم کم کند میشه ... قابل ذکره که برای فراخونی های و ثبت و درج ها همه از async task هم استفاده کردم و حتی زمانی که هر عنوانی روش کلیک میشه و مثلا میره توی صفحه محتویات باز میام و توضیح هر عنوانو به ازای همون عنوان میخونم که جی سان بیهوده تولید نکنم و حجم دادم بالا نره .. شما بگید من جه کار کنم !
- چند کاربر در حال استفاده هستند؟
- در هر 10 ثانیه چند درخواست به سمت سرور می ره؟
- درخواست ها هر چند ثانیه سمت سرور می ره؟
- آیا میان گرفتن اطلاعات فایل هم دانلود می کنید؟
- بعد از گرفتن اطلاعات اونها رو توی ListView نمایش می دید؟
نمونه کد من برای ارسال عملیات درج و حذف ...
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
Commands.insert(G.params, prgListener);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}
.execute((Void) null);
}
else
{
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
Commands.update(G.params, prgListener);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}
.execute((Void) null);
}
عزیز شما دو تا Async تعریف کن توی فایل java جداگانه و بعد اونها رو صدا بزن، اگر در doInbackground اشتباها UI رو صدا بزنی کرش می کنه
در متد OnBackPressed یا OnDestroy می توین Async رو کنسل کنی
چیزی که من توی کدهام استفاده کردم:
private GetItemsACat getItemsACat;
// OnCreate
getItemsACat = new GetItemsACat(byCat);
// هر جایی که بخواهی صدا بزنی getItemsACat.execute();
// OnPause
@Override protected void onPause() { super.onPause(); getItemsACat.cancel(true); }
یک نکته ای که کشقف کردم شاید بدرد بخوره ولی نمیدونم دقیقا آیا مشکل همینه اینه که این متغیر method توی کلاس webservice میاد و هر بار یک سری اطلاعاتو میخونه درسته ؟ خوب حالا من انداختمش حجمشو توی لوگ کت و دیدم هر بار تساعدی وقتی من درخواست read رو میفرستم حجمش زیاد میشه ! ممکنه ازین باشه مشکل و اگه هست چکار باید کرد ...؟؟؟؟؟؟؟؟؟؟؟؟
کدش به این صورت :
log.i(G.logTag,"length"+ (int) method.getEntity().getContentLength() * 1000 + 1696;
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .