بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

استفاده از متد onDestroy

مدیریت گفتگو
naruto 12 سال پیش
آخرین تغییر: 12 سال پیش

چطوری باید از متد 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();
            }
        });

    }

}

نظرات

پاسخ‌ها 3

CreativeBoy 12 سال پیش

دوست عزیز onDestroy خودش یه event هست و زمانی اجرا میشه که اکتیویتی بسته میشه نه این که وقتی فراخوانی میشه اکتیویتی رو میبنده.

اگه به معنی onDestroy هم دقت کنی میبینی که on وقتی قبل از Destroy اومده یعنی در زمان destroy یا تخریب شدن. پس یعنی شما توی بدنه این تابع باید یه چیزی بنویسید تا در زمان destroy شدن اکتیویتی کاری انجام بشه. مثل وقتی که توی متد onCreate کدهاتو مینویسی تا به محض ساخته شدن اکتیویتی اون کدها اجرا بشن. و همین طور برای onResume و onStop و onRestart  و ... 

برای بستن اکتیویتی باید از ()finish استفاده کنی، الان به جای اون onDestroy که گذاشتی تو متد onClick بذاری ()finish درست میشه. 

برای درک بهتر مفاهیم مربوط به اکتیویتی ها بخش 5 رو کامل مطالعه کن،  مخصوصا "از چرخه اجرا بیشتر بدانیم"

نظرات

naruto 12 سال پیش
اتفاقا قبل از اینکه این سوال رو بپرسم اون قسمت رو نگاه کردم ولی راه حلی بهم نداد.
CreativeBoy 12 سال پیش
پس معلومه که با دقت فیلم ها رو نگاه نکردی، چون استاد توی فیلم ها همه چیزو کامل توضیح دادن، متد های onDestroy و ... توی آموزش activity life cycle هست، و قسمت اول از بخش 5 هم طرز کار کردن با اکتیویتی ها آموزش داده شده. حتما فیلم ها رو یه بار دیگه مرور کن، چون اگه توی این مفاهیم پایه ای مشکل داشته باشی توی بخش های بعد انگیزتو از دست میدی. موفق باشی
naruto 12 سال پیش
الان این کاری که شما گفتید رو انجام دادم. ولی باز هم کار نکرد. دلیلش چیه؟
CreativeBoy 12 سال پیش
()G.currentActivity.finish رو امتحان کردی ؟
مجتبی یگانه 12 سال پیش

پاسخ دوستمون کاملا درسته ، درضمن برای بستن کامل برنامه باید اول تمام اکتیویتی های باز بسته بشن ، برای اینکار کافیه از  اکتیویتی ای که در آن قرار دارید ، به اکتیویتی خانه برید(حتما باید به یک اکتیویتی باز رجوع کنید ) ، یا این دستورات :

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 !

نظرات

طاهر 12 سال پیش

  /*
* 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);
}

نظرات

naruto 12 سال پیش
سلام. دستتون درد نکنه. با همین راه شما تو G ست کردم و تونستم تو هر Activity که هستم کلا از App خارج بشم.
طاهر 12 سال پیش
خواهش میکنم قابلی نداشت
Borhani 12 سال پیش
عالی بود تشکر

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .