از بین بردن پروسس برنامه طبق استاندارد اندروید
سلام
من معمولا برای بستن کل برنامه از دستور زیر استفاده می کنم
int p = android.os.Process.myPid();
android.os.Process.killProcess(p);
اما استاد در مورد پاسخ من این طور گفتند ( لینک )
به نقل از استاد: "روش شما درسته، اما باید توجه داشته باشید که ممکنه برنامه شما بعد از بسته شدن Restart بشه، این مشکل در بسیاری از مواقع پیش میاد. در جمع باید سعی کنید کاری کنید که طبق استاندارد اندروید پیش برید و اونهم استفاده نکردن از خطوط بالا هست."
خوب سوال من اینه ، وقتی برنامه رو با زدن کلید Back در آخرین اکتیویتی می بندیم ، پروسس برنامه بسته نمیشه (!) پس روش استاندارد اندروید برای بسته شدن پردازش های اضافه چیه ؟
چون سوالم به همین موضوع مربوط میشه دیگه تاپیک ایجاد نمیکنم
من یه ActivityEnhanced دارم به این صورت که دوتا منو داخلش ساختم و این متد زیر رو هم ovrride کردم:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about: {
Intent intent = new Intent(G.currentActivity, ActivityAbout.class);
G.currentActivity.startActivity(intent);
}
break;
case R.id.exit: {
finish();
System.exit(0);
}
break;
}
return super.onOptionsItemSelected(item);
}
و چندین اکتیویتی که از این ارث بری دارند.
وقتی روی menu ی خروج میزنم اگر توی صفحه اول برنامه باشم برنامه بسته میشه اما اگر داخل اکتیویتی های داخلی برنامه باشم از اونجا برمیگرده به اکتیویتی قبلش!!
چیکار کنم که با زدن دکمه ی خروج کلا برنامه بسته بشه؟!!
راهش رو خودم پیدا کردم :)
توی اکتیویتی enhanced به این صورت یک extra می فرستیم:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about: {
Intent intent = new Intent(G.currentActivity, ActivityAbout.class);
G.currentActivity.startActivity(intent);
}
break;
case R.id.exit: {
Intent intent = new Intent(this, ActivityMain.class);
intent.putExtra("mustFinish", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(intent, 0);
setResult(0);
finish();
}
break;
}
return super.onOptionsItemSelected(item);
}
و در activityMain چک میکنیم که باید بسته بشه برنامه یا نه؟
@Override
protected void onResume() {
boolean isMustFinish;
// TODO Auto-generated method stub
super.onResume();
Bundle extras = getIntent().getExtras();
if (extras != null) {
isMustFinish = extras.getBoolean("mustFinish");
if (isMustFinish) {
System.exit(0);
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .