انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سیو کردن اکتیویتی - رفتن به اکتیویتی جدید - بازگشت و ریستور اکتیویتی قبلی (اندروید)

سیو کردن اکتیویتی - رفتن به اکتیویتی جدید - بازگشت و ریستور اکتیویتی قبلی (اندروید)

#2
سلام.
هنگامی که ما بر روی دکمه Back اشاره می کنیم، اگر روش onBackPressed (کلید شماره 234) در Activity نوشته نشده باشد، عملیات پیش فرض این است که Activity فعلی، destroy (کاملا بسته) شود و اگر قبل از آن، Activity دیگری بوده، به آن برگردیم، یا اگر  نبوده، کاملا از برنامه اندروید خارج شویم. بنابراین شما اگر روش onBackPressed را ننوشته اید، با زدن دکمه Back گوشی، آن Activity دوم، destroy می شود و طبیعتا بار دوم که به آن برگردید، از نو اجرا خواهد شد.
اکنون فرض کنید قصد داریم که اطلاعات Activity را حفظ کنیم. یک راه حل، استفاده از SharedPreferences (کلید شماره 248) می باشد (این کلید را ذکر کردم چون در آن، تنظیمات را گرافیکی تغییر می دهیم، ولی برای ذخیره اطلاعات، کلیدهای دیگری نیز در این مورد وجود دارد)، که البته این ویژگی را دارد که حتی اگر از برنامه اندروید خارج شویم و دوباره برنامه اندروید را اجرا کنیم، باز هم همان آخرین اطلاعات نمایش داده می شود و هیچگاه به تنظیمات اولیه برنمی گردیم (مگر اینکه خود برنامه نویس، یک سری کد برای reset کردن تنظیمات (به صورت دستی یا خودکار) بنویسد).
اما در موارد زیادی، تنظیمات یا تغییرات مد نظرمان، با روش بالا امکان پذیر نیست و همچنین تنها برایمان مهم است که در همان یک بار اجرای برنامه اندروید، اطلاعات آن Activity حفظ شود و در دفعات بعدی اجرای برنامه اندروید، Activity از نو اجرا گردد. در این موارد، باید از همان روش onBackPressed (کلید شماره 234) استفاده کنیم (آن را در Activity دوم می نویسیم) و در آن کدی بنویسیم که کاربر به Activity اول هدایت شود. یعنی به جای destroy شدن Activity دوم (که بعد از آن، به Activity اول برمی گشتیم)، این بار با Intent به Activity اول می رویم (روش Intent را در onBackPressed می نویسیم). بنابراین در این حالت،  Activity دوم در پس زمینه است و به حالت Resume یا Stop رفته است و اگر از Activity اول دوباره به آن وارد شویم، همان اطلاعات را خواهیم داشت (از نو اجرا نمی شود).
فقط یک نکته مهم وجود دارد و آن این است که اگر از روش Intent به صورت معمولی استفاده کنیم، یک صفحه جدید از آن Activity نمایش داده می شود (یعنی در لیست Activity های موجود در پس زمینه، دو یا چند بار وجود خواهد داشت)، برای جلوگیری از این مشکل، باید روش Intent را به شکل زیر به کار ببریم (به Flag تعیین شده دقت کنید) :

کد پی‌اچ‌پی:
Intent intent = new Intent(Activity_2.thisActivity_1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent); 

این Flag باعث می شود که به جای یک اجرای جدید از Activity ، آن را از پس زمینه فراخوانی کنیم (آن اجرایی از آن که در پس زمینه است، دوباره نمایش داده می شود). بنابراین برای رفتن از Activity دوم به Activity اول ( و همچنین برعکس)، Flag بالا را فراموش نکنید (که با اجرای جدید از Activity ها مواجه نشوید).

با توجه به نکاتی که شرح داده شد، توصیه می کنم کلید زیر را بخوانید :

کلید شماره 2802

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط ehtirani


پیام‌های این موضوع
سیو کردن اکتیویتی - رفتن به اکتیویتی جدید - بازگشت و ریستور اکتیویتی قبلی (اندروید) - توسط admin - ۱۳۹۳/۱۰/۲۵, ۱۲:۱۲ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان