#تسک
تا اینجا رو بازم خیلی جاها خوندین اما از اینجا به بعد وارد مبحث اصلیمون میشیم ...تسک (Task) تسک چیست ؟
●جمع چند اکتویتی
●سازمان یافته شده در پشته ! (پشته یا Stack یکی از انواع دادهساختارها(ساختمان داده) است وبرای ذخیره وبازیابی دادهها کاربرد دارد.)
●تسک ها حداقل یک اکتویتی دارن
●اکتویتی های جدید در بالای استک قرار می گیرند.
●ترتیب داده ها بر اساس صف LIFO است . LIFO=Last in first out یعنی آخرین شی (در اینجا اکتویتی)که وارد بشه اول از همه از استک خارج میشه ! که جلوتر دقیق میفهمیم یعنی چی
●هر تسک یک صفت داره که Affinity (وابستگی)نامیده میشه
تا اینجا رو بازم خیلی جاها خوندین اما از اینجا به بعد وارد مبحث اصلیمون میشیم ...تسک (Task) تسک چیست ؟
●جمع چند اکتویتی
●سازمان یافته شده در پشته ! (پشته یا Stack یکی از انواع دادهساختارها(ساختمان داده) است وبرای ذخیره وبازیابی دادهها کاربرد دارد.)
●تسک ها حداقل یک اکتویتی دارن
●اکتویتی های جدید در بالای استک قرار می گیرند.
●ترتیب داده ها بر اساس صف LIFO است . LIFO=Last in first out یعنی آخرین شی (در اینجا اکتویتی)که وارد بشه اول از همه از استک خارج میشه ! که جلوتر دقیق میفهمیم یعنی چی
●هر تسک یک صفت داره که Affinity (وابستگی)نامیده میشه
●هر برنامه حداقل یک تسک دارد (می تونه بیشتر هم داشته باشه )
●تسک ها می تونند به background (پس زمینه ) انتقال بیابند و همونجا فعالیت خودشون رو ادامه بدن
●کاربران بین تسک ها جا به جا می شن به همین دلیل است که شما به راحتی می تونین بین برنامه های مختلف سوییچ کنین و مولتی تسکینگ رو تجربه کنین :)(Multi tasking =انجام چند کار همزمان البته)
خب میایم این ویژگی ها رو با چند مثال به صورت تصویری تفهیم می کنیم...
■نکته مهم : اینجا دقیقا جایی که این مفاهیم اولیه به دردتون می خوره شما به عنوان یه برنامه نویس اندروید باید بدونین کاربر که در حال کار با گوشی است در پس زمینه چه اتفاقاتی داره میافته تا اگر یه مشکلی به وجود اومد یا کاری خواستین در پس زمینه انجام بدین بدونین داره چه اتفاقی میافته !!
●تسک ها می تونند به background (پس زمینه ) انتقال بیابند و همونجا فعالیت خودشون رو ادامه بدن
●کاربران بین تسک ها جا به جا می شن به همین دلیل است که شما به راحتی می تونین بین برنامه های مختلف سوییچ کنین و مولتی تسکینگ رو تجربه کنین :)(Multi tasking =انجام چند کار همزمان البته)
خب میایم این ویژگی ها رو با چند مثال به صورت تصویری تفهیم می کنیم...
■نکته مهم : اینجا دقیقا جایی که این مفاهیم اولیه به دردتون می خوره شما به عنوان یه برنامه نویس اندروید باید بدونین کاربر که در حال کار با گوشی است در پس زمینه چه اتفاقاتی داره میافته تا اگر یه مشکلی به وجود اومد یا کاری خواستین در پس زمینه انجام بدین بدونین داره چه اتفاقی میافته !!
Persian Software Engineers
Photo
الان کاربر وارد صفحه اصلی میشه
Foreground Task = تسکی که شما مشاهده می کنین
Background Task =تسکی که در پس زمینه هست و قابل مشاهده توسط شما نیست و در اصل در استک و حافظه قرار دارد. و اینجا چون کاربر کاری انجام نداده خالی است.
Foreground Task = تسکی که شما مشاهده می کنین
Background Task =تسکی که در پس زمینه هست و قابل مشاهده توسط شما نیست و در اصل در استک و حافظه قرار دارد. و اینجا چون کاربر کاری انجام نداده خالی است.
Persian Software Engineers
Photo
حال کاربر وارد یه برنامه دیگه میشه و تسک قبلی که صفحه ی اصلی بود وارد استک میشه ...
Persian Software Engineers
Photo
کاربر با زدن دکمه Back گوشی یا دکمه Home که این ها هم تفاوت داره و در بخش حیات داده ی اکتویتی ها بحث میشه دوباره به صفحه اصلی بر می گرده حال برنامه قبلی وارد به استک میشه و چون صفحه ی اصلی در استک بود و قابل مشاهده نبود الان قابل مشاهده و اکتیو میشه و یک تسک جدید ساخته نمیشه ... (اگر با دکمه Back برگرده کاربر اکتویتی destroy میشه و از بین میره اطلاعات داخل Bundle ش ولی اگر با دکمه هوم برگرده اکتویتی pause میشه در جلسات بعدی کاملا با این موضوع آشنا میشین )
در سه عکس بالا کاربر وارد برنامه G+ میشه و بعد وارد قسمت پست گذاشتن در گوگل پلاس میشه و سپس به صفحه ی اصلی برمی گرده همونطور که مشاهده می کنید دو تا اکتویتی برنامه گوگل پلاس در کنار هم قرار گرفتند چون هر کدوم یک اکتویتی جدا هستند اما این که هر دو در یک تسک باشن یا در دو تا تسک مختلف معلوم نیست و جلوتر بررسی میشه که چه فرقی دارند
در اینجا کاربر وارد برنامه Flipboard میشه ک سپس به صفحه ی اصلی بر می گرده و از طریق Recent Apps که با فشردن دکمه ی هوم یا تو گوشی های جدید یه دکمه جدا براش تعبیه شده وارد برنامه G+ میشه حالا بک گراند کاملا از تسک های g+خالی میشه چون در اصل الان اون تسک رو از بک گراند به فورگراند انتقال دادیم و visible ش کردیم ! (از نظر چرخه ی حیات اکتویتی الان تو حالت onRestart یا onResume هستیم )
خب مرحله اول رو تازه گذروندیم 😊 این رفتار دیفالت و پیش فرض اکتیویتی ها بود ... حالا می خوایم این رفتار رو تغییر بدیم و کار اصلی شروع میشه !