چند وقتی است برنامه نویسی اندروید را شروع کردم، برای بستن برنامه یا برنامک، نمیخواستم از دکمه Back استفاده کنم، برای همین روشهای متعددی را تست کردم، اکثر آنها کار نمیکردند؟! ولی بالاخره یک روش به درستی کار کرد. حال میخواهم این روش را منتشر کنم تا شما دردسرهایی که من کشیدم را نکشید.
برنامه نوسی اندروید خیلی چالشی است؛ بدین معنی که واقعاً نیاز به دانش برنامه نویسی دارد و تجربه و پشتکار درصد مهمی از راه را هموار می کنند. سختی دیگرش، debuging است. دیباگ کردن برنامه های اندروید خیلی سخت است، البته این مورد اخیر برای برنامه نویسان PHP خیلی سخت تر هم می شود.
ابتدا باید بگویم که اگر برنامکی که مینویسید، کاربردی است، بهتر است از این کد استفاده نکنید. در چند جا خواندم که “استفاده از دکمه Back استاندارد است و استفاده از سایر روشها توصیه نمیشود.” من بدلیل اینکه در برنامک(همان App) مراجعات متعدد به Activity ها و ناحیه کاربری داشتم، امکان استفاده از دکمه Back فراهم نبود. چون برنامک های اندروید دارای یک stack هستند که تمام Activityهای استفاده شده در آن قرار می گیرند و با زدن دکمه Back بترتیب از پشته(stack) خارج میشوند. وقتی بحث لاگین/خروج وجود داشته باشد، امکان اینکه دسترسی غیر مجاز پیش بیاید وجود دارد.
و اما نحوه اجرای این کد:
همانطور که میدانید، برای نوشتن کد روی دکمه Back از متد onBackPressed استفاده میشود. من یک Toast هم روی دکمه Back گذاشته ام که کاربر را برای خروج به دکمه موردنظر هدایت میکند. با کلیک روی دکمه خروج، متد AppExit اجرا شده و برنامه بسته می شود.
public void onBackPressed(){
Toast.makeText(getApplicationContext(),R.string.use_logout_button,Toast.LENGTH_LONG).show();
}
public void AppExit()
{
this.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
Toast که برای نمایش پیام بکار می رود، توصیه می شود از نوشتن فارسی در برنامه خودداری کنید، بجای اینکار معادل فارسی را در فایل string.xml ایجاد کرده و با id و توسط شی R به آنها دسترسی پیدا کنید.
onBackPressed هم متد دکمه Back است، که اگر شما آنرا override نکنید، بصورت پیش فرض کار میکند و با زدن روی آن مرتباً در پشته جلو می روید تا به اولین اجرای MainActivity برسید و سپس برنامه بسته می شود. برای همین من آنرا override کردم تا اگر در Activity جاری دکمه Back زده شد، تنها پیامی نمایش داده شود و اجرای برنامه منتقل نشود.
کاری که AppExit انجام می دهد این است که Activity جاری را تمام کرده و اجرا را به Home سیستم عامل اندروید می دهد.
اگر کسی روش بهتری میداند، در نظرات بگوید تا معرفی شود.
نظرات کاربران
نظر خود را بفرستید:
آدرس ایمیل شما منتشر نخواهد شد.