PDA

View Full Version : توضیحی در مورد AsyncTask



harani
پنج شنبه 30 آذر 1391, 13:17 عصر
با سلام آیا میشه راهنمایی کنید که کار سه متد
doInBackground , onProgressUpdate , onPostExecute چی ؟؟


96961

اگه تونستید به سوال زیرم که در رابطه با سوال بالاست جواب بدید اگه که نخواستید هم مهم نیست ولی ممنون میشم جواب بدین.

من دارم روی پروژه کار میکنم که شامل یک دیتابیس (Sqlite) هستش که این دیتابیبس سه تا ستون داره با نامهای id_ و Name و Tel و Cahsh_Code داره از طرفی اکتیوتی من سه تا ادیت تکست داره و یه کلید داره کاربر با وارد شدن به اکتیوتی مقادیر دو تا از ادیت تکست برابر یکی از مقادیر ستون Name و Tel میشه .
حالا میخوام کاربر زمانی که تو ادیت تکست سوم چیزی نوشت و کلیدو زد این مقدار تو Sqlite توسط AsyncTask ذخیره بشه و با دستور و پیغامی بیاد که بگه ذخیره شد .


با سپاس فراوان

Nevercom
پنج شنبه 30 آذر 1391, 14:17 عصر
ASyncTask باعث میشه عملیات شما در یک Thread دیگه اجرا بشه. این ازین جهت اهمیت داره که اگر عملیاتی که زمان زیادی میبره رو در Main Thread اجرا کنید، UI فریز میشه و اگر برنامه تا ۵ ثانیه نسبت به رفتار کاربر، مثل لمس کردن قسمتی از صفحه (مثلاً یک Button) واکنشی نشون نده، اندروید پیغام ANR میده.

متد doInBackground جایی هست که عملیات مورد نظر رو باید انجام میدید. درواقع قسمت اجرایی کلاس این هست.
متد onPreExecute قبل از اجرا شدن doInBackground اجرا میشه و برای زمانی مفید هست که قبل از انجام عملیات نیاز باشی یک عملیات دیگه مثل مقداردهی یا تعریف متغیر صورت بگیره.
متد onPostExecute هم همونطور که از اسمش پیداست پس از اتمام کار doInBackground اجرا میشه. هر عملیاتی که قراره پس از اتمام عملیات اصلی انجام بشه (مثلاً ارسال پیغام موفقیت انجام عملیات به کلاس اصلی) رو اینجا قرار بدید.
متد onProgressUpdate هم به کلاس اصلی اطلاع میده که درصد پیشرفت به چه شکل هست.

harani
پنج شنبه 30 آذر 1391, 15:20 عصر
ممنونم حالا من میخوام کاربر تو ادیت تکست هر چی نوشت بعد کلید رو زد تو دیتابیس ذخیره بشه و پیغام ذخیره شد رو نشون بده البته استفاده از Asynctask ,لطفاً راهنمایی فرمایید .

Modernidea
شنبه 02 دی 1391, 00:38 صبح
سلام

به قسمت شماره 5 این صفحه (http://www.vogella.com/articles/AndroidPerformance/article.html) مراجعه کنید، مثال خوبی زده. مثال در این مورد هست که با اجرا شدن برنامه، صفحه وبی در برنامه لود و نمایش داده میشه. تمام پروسه دانلود صفحه وب توسط AsyncTask انجام میشه که باعث جلوگیری از قفل شدن برنامه میشود.

موفق باشید.