بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در اجرای method با AsyncTask

مدیریت گفتگو
hamcalas 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام

در اجرای method  از طریق  AsyncTask چطور باید عمل کنم  

کلاس AsyncTask

 private class LongOperation extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {
Log.i("LOG","doInBackground");

return "Executed";
}

@Override
protected void onPostExecute(String result) {
Log.i("LOG","onPostExecute");

}

@Override
protected void onPreExecute() {
Log.i("LOG","onPreExecute");

}

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

}
}

یک method به شکل زیر

 private  String conter(){
Log.i("LOG","my method is runing ! ");
return "";

}

اجرا از طریق دستور :

 new LongOperation().execute(conter());

وقتی اجرا می کنم به ترتیب اجرا نمی شود ونتییجه ی اجرای کد بالا به این شکل است

I/LOG: my method is runing ! 
I/LOG: onPreExecute
I/LOG: doInBackground
I/LOG: onPostExecute

در حالی که باید به ترتیب زیر باشد :


I/LOG: onPreExecute
I/LOG: doInBackground
I/LOG: my method is runing !
I/LOG: onPostExecute

 

نظرات

kamal_hajatmand 10 سال پیش
بهتر بود متد رو همونجایی که میخواین نمایش بده استفاده کنین یعنی اگه میخواین توی do in backround اجرا بشه همونجا و اگه تو onPostExecute میخواینش توی onPostExecute فراخونی کنین
Hajhosseini 10 سال پیش
مشکل از طریقه اجراتونه! وقتی شما center رو توی پارامترها گذاشتید، روند به این صورت میشه که اول میره متد رو بررسی میکنه و نتیجه که یک String هست رو توی پارامتر به کلاس LongOperation ارسال میکنه.
hamcalas 10 سال پیش
بله مشکلم از روش اجراست، اگر کدها مستقیما در onPostExecute قرا بدهم (از متد یا فانکشن استفاده نکنم) درست اجرا می شود ، اما هر بار قرار است کدهای جدیدی را از طریق کلاس AsyncTask اجرا کنم که در این صورت باید چندین کلاس AsyncTask تعریف کنم . در واقع می خواهم با یک کلاس AsyncTask چندین متد را در جاهای مختلف اجرا کنم

هنوز پاسخی ثبت نشده است


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