2015-04-03 84 views
1

我的应用程序包含12个活动。我可以通过一次点击退出整个应用程序吗? finish()只完成一个单独的活动并启动以前的活动。请帮我解决这个问题从Android应用程序退出

回答

-1
 AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
       this); 
     alertDialogBuilder.setTitle("Exit App?"); 
     alertDialogBuilder 
       .setMessage("Click yes to exit!") 
       .setCancelable(false) 
       .setPositiveButton("No", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           dialog.cancel(); 
          } 
         }) 

       .setNegativeButton("Yes", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int id) { 
           moveTaskToBack(true); 
           android.os.Process 
             .killProcess(android.os.Process 
               .myPid()); 
           System.exit(0); 

          } 
         }); 
+0

对不起@ Demo Sharma,它不起作用 – Anupama 2015-04-03 09:17:29

+0

不要使用System,exit()。许多原因不是因为它搞砸了Android应用内存管理。 – Simon 2015-04-03 09:45:21

0

当从你想要关闭所有活动的活动开始时,为意图添加一个标志。

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

这会让你当前活动的顶部,因此,当你完成这个任务就会完成

0

创建的所有活动的静态实例

public class Activity1 extends FragmentActivity { 

    private static Activity1 sActivity; 

    public static Activity1 getsActivity() { 
     return sActivity; 
    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     sActivity = this; 

} 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     sActivity = null 
    } 
} 
} 

现在创建一个退出方法在你的工具类喜欢,并开始从更高的顺序杀死活动,并从您的应用程序内的任何地方打电话给它

public static void exitApp(){ 
    if(Acitivity10.getsActivity() != null){ 
    Activity10.getsActivity.finish(); 
} 
    if(Acitivity9.getsActivity() != null){ 
    Activity9.getsActivity.finish();  
} 
- 
- 
if(Acitvity1.getsActivity()!= null){ 
    Activty1.getsActivity().finish(); 
} 
} 
+0

想象一下在Play商店中搜索。每次你输入一个新的搜索它都会发起一个新的搜索活动。您需要能够处理同一种类的多个活动。 – 2015-04-03 10:15:01

+0

嗯,所以这种方式我们不能处理同一类型的多个活动, cz它只会杀死当前活动,其余活动将保持不变 – Abhishek 2015-04-03 10:26:19

+0

我们可以使用WeakReferences的集合。也许一个带有WeakReferences的回调函数,它会从列表中删除空的引用,所以它不会无法控制地增长。 – 2015-04-03 10:31:19