2012-02-24 3 views
0

Я хочу закрыть общее приложение в android, когда я нажимаю кнопку «НЕТ» в диалоге. Я использовал следующий код.Как убить все действия в приложении Android?

protected Dialog onCreateDialog(int id) { 
switch (id) { 
    case 0: 
     AlertDialog.Builder builder1 = new AlertDialog.Builder(this); 

    builder1.setTitle("GASIMIZER"); 
    builder1.setCancelable(false) 
    .setPositiveButton("YES", 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int which) { 
      Intent i = new Intent(Finalpage.this,NewproActivity.class); 
     startActivity(i); 
    } 
    }) 
    .setNegativeButton("NO",new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface dialog,int which) 
     { 
      quit(); 

    } 
    }); 

    AlertDialog alert1 = builder1.create(); 
    alert1.show(); 
    break; 

    } 
    return null; 
    } 

    public void quit() { 
     onDestroy(); 
    } 

Пожалуйста, скажите мне, как я могу решить эту проблему.

+0

Вот это лучшее решение, чтобы закрыть все виды деятельности: http://stackoverflow.com/a/5453228/1464582 –

ответ

5

вы можете вызвать метод finish() от вашей активности и вызовите (рабочий стол сымитировать homebutton) программным образом:

private void endApplication() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    startActivity(intent); 
} 
+0

его работа, но когда я открываю приложение приложение покажет последнее действие, то есть, когда я выйду из приложения. – NareshRavva

0

Вы should't называете onDestroy() себя .. вместо того, чтобы позвонить finish() закрыть активность ..

Вызов метода жизненного цикла активности самого плохая практика (Не знаю, если его возможно). Они обрабатываются самой ОС Android.

+0

thanq для ответа я хочу, чтобы закрыть все приложения, когда я нажимаю на кнопку «нет» – NareshRavva

+0

см. Эту ссылку http://www.google.co.in/#hl=ru&gs_nf=1&cp=31&gs_id=3w&xhr=t&q=how+to+close+whole+application&pf=p&sclient=psy-ab&pbx=1&oq=how+to + close + whole + application + & aq = f & aqi = & aql = & gs_sm = & gs_upl = & bav = on.2, or.r_gc.r_pw.r_qf., cf.osb & fp = 70e2b85fee382b45 & biw = 1280 & bih = 933 – ngesh

1

Вы должны NOT убить ваши приложения. Вы должны позволить обработчику ActivityManager.

В частности, если вы хотите, чтобы пользователь покинул ваше приложение, отправьте их домой с помощью намерения на рабочий стол.

8

Давайте сделаем это немного simply.Suppose у вас есть класс Constants.java где вы положили все ваши повторно использованы константы application.In, которые объявляют стек деятельность, как это:

public static ArrayList<WeakReference<Activity>> activity_stack=new ArrayList<WeakReference<Activity>>(); 
/** 
* Add the activity as weak reference to activity stack. 
* @param act 
*/ 
public static void addToActivityStack(Activity act) 
{ 
    WeakReference<Activity> ref = new WeakReference<Activity>(act); 
    activity_stack.add(ref); 

} 

И всякий раз, когда вы создаете какую-либо деятельность, в этом OnCreate на последнюю строку вы положили что-то вроде этого:

Constants.addToActivityStack(this); 

Теперь определим способ, как в следующем Constants.java

/** 
* Kill all the activities on activity stack except act. 
* To kill all the passed parameter should be null. 
*/ 
public static void killAllExcept(Activity act) 
{ 
    for(WeakReference<Activity> ref:Global.activity_stack) 
    { 
     if(ref != null && ref.get() != null) 
     { 
      if(act != null && ref.get().equals(act)) 
      { 
       continue;//dont finish this up. 
      } 
      ref.get().finish(); 
     } 
    } 
    activity_stack.clear();//but clear all the activity references 
} 

Теперь, когда вам нужно, чтобы закончить все свои действия, просто позвоните Constants.killAllExcept(null) или Constants.killAllExcept(this), если вы хотите сохранить эту деятельность.

Этот метод удобен, если вы хотите сохранить одно действие, но другие/если хотите, вы можете закончить их все.

0

Следует подчеркнуть, что предлагаемый подход Constants.killAll() является плохим дизайном и будет использоваться при неправильном использовании утечек памяти. Сохранение статической ссылки на активность является наиболее распространенной причиной утечек памяти в Android.

Надеюсь, это поможет.

Смежные вопросы