استفاده از متد onDestroy
چطوری باید از متد onDestroy استفاده کنیم ؟ من می خوام در هر اکتیویتی که هستم با استفاده از یه تابع از کل برنامه خارج بشم و وقتی دوباره وارد برنامه بشم، از اول شروع به اجرای برنامه کنم. الان کدی که من نوشتم اینه. برای تست توسومین اکتیویتی که هستم یه دکمه گذاشتم که وقتی روش کلیک می کنم می خوام کلا خارج بشه از برنامه ولی خب عمل نمی کنه.
package samani.dave.app.count; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class AboutActivity extends Activity { @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.about); Button butt findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { onDestroy(); } }); } }
دوست عزیز onDestroy خودش یه event هست و زمانی اجرا میشه که اکتیویتی بسته میشه نه این که وقتی فراخوانی میشه اکتیویتی رو میبنده.
اگه به معنی onDestroy هم دقت کنی میبینی که on وقتی قبل از Destroy اومده یعنی در زمان destroy یا تخریب شدن. پس یعنی شما توی بدنه این تابع باید یه چیزی بنویسید تا در زمان destroy شدن اکتیویتی کاری انجام بشه. مثل وقتی که توی متد onCreate کدهاتو مینویسی تا به محض ساخته شدن اکتیویتی اون کدها اجرا بشن. و همین طور برای onResume و onStop و onRestart و ...
برای بستن اکتیویتی باید از ()finish استفاده کنی، الان به جای اون onDestroy که گذاشتی تو متد onClick بذاری ()finish درست میشه.
برای درک بهتر مفاهیم مربوط به اکتیویتی ها بخش 5 رو کامل مطالعه کن، مخصوصا "از چرخه اجرا بیشتر بدانیم"
پاسخ دوستمون کاملا درسته ، درضمن برای بستن کامل برنامه باید اول تمام اکتیویتی های باز بسته بشن ، برای اینکار کافیه از اکتیویتی ای که در آن قرار دارید ، به اکتیویتی خانه برید(حتما باید به یک اکتیویتی باز رجوع کنید ) ، یا این دستورات :
Intent intent = new Intent(ActivityInfo.this, ActivityHome.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
خوب تا اینجا تمام اکتیوتی ها بسته شدن ، و فقط ActivityHome باز هست ، هرچند میتونید با دستور finish برنامه رو ببندید ، اما برای بستن پروسس برنامه میتونید این کار هم انجام بدید
ActivityHome.finish();
System.exit(0); // Close App Process !
/*
* Exit Of Application
*/
public static void AppExit()
{
G.CurrentActivity.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
G.CurrentActivity.startActivity(intent);
System.exit(0);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .