PDA

View Full Version : مشکل با AsyncTask



mahdiaspx
چهارشنبه 16 مرداد 1392, 13:40 عصر
سلام
من در یک اکتیویتی یک AsyncTask دارم که بعد از اجرای اون برنامه به اکتیوتی دوم میره
زمانیکه از اکتیویتی دوم به همون اکتیویتی اول برمی گردم و دوباره می خوام AsyncTask رو اجرا کنم ، برنامه خطا داره .
مشکل چیه ؟
کسی میتونه منو راهنمایی کنه ؟
ممنون

private class AsyncCallWSPersonalInfo extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
Log.i("ShamdarPersonalInfo", "doInBackground");
CallPersonalInfoWebService();
return null;
}

@Override
protected void onPostExecute(Void result) {
Log.i("ShamdarPersonalInfo", "onPostExecute");
}

@Override
protected void onPreExecute() {
Log.i("ShamdarPersonalInfo", "onPreExecute");
Toast.makeText(getApplicationContext(),PersianResh ape.reshape("در حال دریافت اطلاعات"), Toast.LENGTH_SHORT).show();
}

@Override
protected void onProgressUpdate(Void... values) {
Log.i("ShamdarPersonalInfo", "onProgressUpdate");
}
}

rubiks.kde
چهارشنبه 16 مرداد 1392, 14:16 عصر
سلام شی که از کلاس AsyncTask درست کردید به صورت سراسری است یا local ؟

mahdiaspx
چهارشنبه 16 مرداد 1392, 14:36 عصر
سلام
local در oncreate اکتیویتی هستش .

rubiks.kde
چهارشنبه 16 مرداد 1392, 16:25 عصر
میشه متن خطا رو بزارید ، اون چیزی که در logcat وجود داره

mahdiaspx
چهارشنبه 16 مرداد 1392, 16:45 عصر
دوست عزیز
من فکر می کنم مشکل به خاطر اینه که علی رغم بسته شدن اکتیویتی ، AsyncTask بسته نمی شه و همچنان run میمونه .
زمانیکه دوباره اون اکتیویتی رو صدا می زنم و یه دونه از AsyncTask دوباره می سازم ، به خاطر بسته نشدن قبلی به من خطا میده .
فکر می کنید این مشکل چطوری حل میشه ؟

rubiks.kde
چهارشنبه 16 مرداد 1392, 17:20 عصر
ببینید اگه شی به صورت لوکال باشه فک نکم مشکل ایجاد بشه ولی شما از تابع cancel استفاده کن و بعدش هم شی که ساختید رو مساوی null قرار بدید تا در دوباره ایجاد کردن شی مشکل نخورید.
ولی بهتر بود که شما خروجی logcat رو قرار میدادید.

mahdiaspx
چهارشنبه 16 مرداد 1392, 17:45 عصر
تابع cancel رو کجا استفاده کنم ؟
چطوری شی ساخته شده رو مساوی null قرار بدم ؟

rubiks.kde
چهارشنبه 16 مرداد 1392, 19:08 عصر
به این صورت عمل کن (این کدها رو توی تابع onPause اکتیویتی اول بنویس)

myTask.cancel(true);
myTask=null;

mahdiaspx
چهارشنبه 16 مرداد 1392, 23:14 عصر
دوست عزیز از همراهی شما ممنونم
به این ترتیب من باید myTask رو به صورت عمومی تعریف کنم و در onCreate یه دونه از اون new کنم و در onPause هم همونطور که شما گفتین این دو خط کد رو بزارم .
درسته ؟

rubiks.kde
چهارشنبه 16 مرداد 1392, 23:44 عصر
این یه روشه،این واسه زمانی که شما دلیل خطاتون به خاطر ران بود myTask هست.حالا امتحان کنید ببینید مشکلتون رو برطرف میکنه یانه.

mahdiaspx
پنج شنبه 17 مرداد 1392, 09:04 صبح
نه ، مشکلم حل نشد .

اینم logcat

08-08 04:12:24.724: W/ActivityManager(277): Unable to start service Intent { act=com.android.email.ACCOUNT_INTENT } U=0: not found
08-08 04:12:26.534: E/ActivityThread(641): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$Proxy Connection@40cfbff8 that was originally bound here
08-08 04:12:26.534: E/ActivityThread(641): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$Proxy Connection@40cfbff8 that was originally bound here
08-08 04:12:26.534: E/ActivityThread(641): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
08-08 04:12:26.534: E/ActivityThread(641): at android.app.LoadedApk.getServiceDispatcher(LoadedA pk.java:863)
08-08 04:12:26.534: E/ActivityThread(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1418)
08-08 04:12:26.534: E/ActivityThread(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1407)
08-08 04:12:26.534: E/ActivityThread(641): at android.content.ContextWrapper.bindService(Context Wrapper.java:473)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:157)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:145)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.emailcommon.service.AccountServiceProx y.getDeviceId(AccountServiceProxy.java:116)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.exchange.ExchangeService.getDeviceId(E xchangeService.java:1249)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.exchange.ExchangeService$7.run(Exchang eService.java:1856)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:551)
08-08 04:12:26.534: E/ActivityThread(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:549)
08-08 04:12:26.534: E/ActivityThread(641): at android.os.AsyncTask$2.call(AsyncTask.java:287)
08-08 04:12:26.534: E/ActivityThread(641): at java.util.concurrent.FutureTask.run(FutureTask.jav a:234)
08-08 04:12:26.534: E/ActivityThread(641): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1080)
08-08 04:12:26.534: E/ActivityThread(641): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:573)
08-08 04:12:26.534: E/ActivityThread(641): at java.lang.Thread.run(Thread.java:856)
08-08 04:12:27.714: E/StrictMode(641): null
08-08 04:12:27.714: E/StrictMode(641): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$Proxy Connection@40cfbff8 that was originally bound here
08-08 04:12:27.714: E/StrictMode(641): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
08-08 04:12:27.714: E/StrictMode(641): at android.app.LoadedApk.getServiceDispatcher(LoadedA pk.java:863)
08-08 04:12:27.714: E/StrictMode(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1418)
08-08 04:12:27.714: E/StrictMode(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1407)
08-08 04:12:27.714: E/StrictMode(641): at android.content.ContextWrapper.bindService(Context Wrapper.java:473)
08-08 04:12:27.714: E/StrictMode(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:157)
08-08 04:12:27.714: E/StrictMode(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:145)
08-08 04:12:27.714: E/StrictMode(641): at com.android.emailcommon.service.AccountServiceProx y.getDeviceId(AccountServiceProxy.java:116)
08-08 04:12:27.714: E/StrictMode(641): at com.android.exchange.ExchangeService.getDeviceId(E xchangeService.java:1249)
08-08 04:12:27.714: E/StrictMode(641): at com.android.exchange.ExchangeService$7.run(Exchang eService.java:1856)
08-08 04:12:27.714: E/StrictMode(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:551)
08-08 04:12:27.714: E/StrictMode(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:549)
08-08 04:12:27.714: E/StrictMode(641): at android.os.AsyncTask$2.call(AsyncTask.java:287)
08-08 04:12:27.714: E/StrictMode(641): at java.util.concurrent.FutureTask.run(FutureTask.jav a:234)
08-08 04:12:27.714: E/StrictMode(641): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1080)
08-08 04:12:27.714: E/StrictMode(641): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:573)
08-08 04:12:27.714: E/StrictMode(641): at java.lang.Thread.run(Thread.java:856)
08-08 04:12:27.764: I/Choreographer(277): Skipped 72 frames! The application may be doing too much work on its main thread.
08-08 04:12:28.274: W/ActivityManager(277): Unbind failed: could not find connection for android.os.BinderProxy@4103b2c8
08-08 04:12:28.434: I/ShamdarPersonalInfo(903): onPreExecute
08-08 04:12:28.624: E/ActivityThread(641): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$Proxy Connection@40cfb708 that was originally bound here
08-08 04:12:28.624: E/ActivityThread(641): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$Proxy Connection@40cfb708 that was originally bound here
08-08 04:12:28.624: E/ActivityThread(641): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
08-08 04:12:28.624: E/ActivityThread(641): at android.app.LoadedApk.getServiceDispatcher(LoadedA pk.java:863)
08-08 04:12:28.624: E/ActivityThread(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1418)
08-08 04:12:28.624: E/ActivityThread(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1407)
08-08 04:12:28.624: E/ActivityThread(641): at android.content.ContextWrapper.bindService(Context Wrapper.java:473)
08-08 04:12:28.624: E/ActivityThread(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:157)
08-08 04:12:28.624: E/ActivityThread(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:145)
08-08 04:12:28.624: E/ActivityThread(641): at com.android.emailcommon.service.ServiceProxy.test( ServiceProxy.java:191)
08-08 04:12:28.624: E/ActivityThread(641): at com.android.exchange.ExchangeService$7.run(Exchang eService.java:1850)
08-08 04:12:28.624: E/ActivityThread(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:551)
08-08 04:12:28.624: E/ActivityThread(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:549)
08-08 04:12:28.624: E/ActivityThread(641): at android.os.AsyncTask$2.call(AsyncTask.java:287)
08-08 04:12:28.624: E/ActivityThread(641): at java.util.concurrent.FutureTask.run(FutureTask.jav a:234)
08-08 04:12:28.624: E/ActivityThread(641): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1080)
08-08 04:12:28.624: E/ActivityThread(641): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:573)
08-08 04:12:28.624: E/ActivityThread(641): at java.lang.Thread.run(Thread.java:856)
08-08 04:12:28.824: I/Choreographer(903): Skipped 81 frames! The application may be doing too much work on its main thread.
08-08 04:12:28.864: I/ShamdarPersonalInfo(903): doInBackground
08-08 04:12:29.914: E/SurfaceFlinger(36): ro.sf.lcd_density must be defined as a build property
08-08 04:12:30.004: E/StrictMode(641): null
08-08 04:12:30.004: E/StrictMode(641): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$Proxy Connection@40cfb708 that was originally bound here
08-08 04:12:30.004: E/StrictMode(641): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
08-08 04:12:30.004: E/StrictMode(641): at android.app.LoadedApk.getServiceDispatcher(LoadedA pk.java:863)
08-08 04:12:30.004: E/StrictMode(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1418)
08-08 04:12:30.004: E/StrictMode(641): at android.app.ContextImpl.bindService(ContextImpl.ja va:1407)
08-08 04:12:30.004: E/StrictMode(641): at android.content.ContextWrapper.bindService(Context Wrapper.java:473)
08-08 04:12:30.004: E/StrictMode(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:157)
08-08 04:12:30.004: E/StrictMode(641): at com.android.emailcommon.service.ServiceProxy.setTa sk(ServiceProxy.java:145)
08-08 04:12:30.004: E/StrictMode(641): at com.android.emailcommon.service.ServiceProxy.test( ServiceProxy.java:191)
08-08 04:12:30.004: E/StrictMode(641): at com.android.exchange.ExchangeService$7.run(Exchang eService.java:1850)
08-08 04:12:30.004: E/StrictMode(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:551)
08-08 04:12:30.004: E/StrictMode(641): at com.android.emailcommon.utility.Utility$2.doInBack ground(Utility.java:549)
08-08 04:12:30.004: E/StrictMode(641): at android.os.AsyncTask$2.call(AsyncTask.java:287)
08-08 04:12:30.004: E/StrictMode(641): at java.util.concurrent.FutureTask.run(FutureTask.jav a:234)
08-08 04:12:30.004: E/StrictMode(641): at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1080)
08-08 04:12:30.004: E/StrictMode(641): at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:573)
08-08 04:12:30.004: E/StrictMode(641): at java.lang.Thread.run(Thread.java:856)
08-08 04:12:30.384: W/ActivityManager(277): Unbind failed: could not find connection for android.os.BinderProxy@4102c660
08-08 04:12:30.446: E/SurfaceFlinger(36): ro.sf.lcd_density must be defined as a build property
08-08 04:12:30.494: I/Choreographer(903): Skipped 963 frames! The application may be doing too much work on its main thread.
08-08 04:12:30.894: D/dalvikvm(277): GC_CONCURRENT freed 784K, 15% free 5916K/6936K, paused 53ms+56ms, total 485ms
08-08 04:12:31.174: I/ActivityManager(277): Displayed com.example.sahamdar/.AttorneyInfo: +8s529ms
08-08 04:12:31.224: I/Choreographer(277): Skipped 44 frames! The application may be doing too much work on its main thread.
08-08 04:12:32.454: I/Choreographer(903): Skipped 666 frames! The application may be doing too much work on its main thread.
08-08 04:12:32.564: W/ActivityManager(277): Launch timeout has expired, giving up wake lock!
08-08 04:12:32.674: W/ActivityManager(277): Activity idle timeout for ActivityRecord{410a1f98 u0 com.example.sahamdar/.AttorneyInfo}
08-08 04:12:33.594: I/Choreographer(903): Skipped 210 frames! The application may be doing too much work on its main thread.
08-08 04:12:34.794: I/Choreographer(277): Skipped 30 frames! The application may be doing too much work on its main thread.

mahdiaspx
پنج شنبه 17 مرداد 1392, 10:14 صبح
اینم سورس پروژه ام .
زمانیکه از توی اکتیویتی AppMenu به اکتیویتی AttorneyInfo میرم ، برای بار اول مشکلی نداره ، اما دفعه ی دوم خطا میده .
نام کاربری Mahdi و رمز عبور برنامه 12345 می باشد ، در ضمن باید کامپیوترتون در حین اجرای برنامه به اینترنت وصل باشه چون برنامه از وب سرویس استفاده میکنه .

http://s1.picofile.com/file/7884031498/sahamdar.rar.html

ممنون

mahdiaspx
پنج شنبه 17 مرداد 1392, 11:20 صبح
الان متوجه شدم که فقط یک asyncTask در کل برنامه ام اجرا میشه و بعد از اجرای اولین asyncTask ، بقیه ی asyncTask دیگه اجرا نمی شن !!!

rubiks.kde
پنج شنبه 17 مرداد 1392, 12:38 عصر
من برنامه شما رو اجرا کردم ولی خطایی که برای من میداد بخاطر null بود متغییر username بود که شما بین اکتیویتی ها جابجا میکردید و با در نظر گرفتن حالت های نال درست شد.

mahdiaspx
پنج شنبه 17 مرداد 1392, 13:01 عصر
یعنی الان من باید چیکار کنم ؟

mahdiaspx
پنج شنبه 17 مرداد 1392, 13:08 عصر
rubiks.kde (http://barnamenevis.org/member.php?231180-rubiks.kde) عزیز
واقعا ممنون
مشکلم حل شد .

rubiks.kde
پنج شنبه 17 مرداد 1392, 13:55 عصر
خواهش میکنم