Android 怎么退出整个应用程序?[转]

我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。 后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public boolean onCreateOptionsMenu(Menu menu)  
  2. {  
  3.   
  4. super.onCreateOptionsMenu(menu);  
  5. MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit");  
  6. item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()  
  7. {  
  8. public boolean onMenuItemClick(MenuItem item)  
  9. {  
  10. System.exit(0);  
  11. return true;  
  12. }  
  13. });  
  14. return true;  
  15. }  

想到这样太不方便了,每次退出界面之后应用程序还在运行,今天查了下资料终于把这个问题给解决了,
网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用
SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

附代码:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. import java.util.LinkedList;   
  2. import java.util.List;   
  3. import android.app.Activity;   
  4. import android.app.AlertDialog;   
  5. import android.app.Application;   
  6. import android.content.DialogInterface;   
  7. import android.content.Intent;   
  8.    
  9. public class SysApplication extends Application {   
  10.     private List mList = new LinkedList();   
  11.     private static SysApplication instance;   
  12.    
  13.     private SysApplication() {     
  14.     }   
  15.     public synchronized static SysApplication getInstance() {   
  16.         if (null == instance) {   
  17.             instance = new SysApplication();   
  18.         }   
  19.         return instance;   
  20.     }   
  21.     // add Activity    
  22.     public void addActivity(Activity activity) {   
  23.         mList.add(activity);   
  24.     }   
  25.    
  26.     public void exit() {   
  27.         try {   
  28.             for (Activity activity : mList) {   
  29.                 if (activity != null)   
  30.                     activity.finish();   
  31.             }   
  32.         } catch (Exception e) {   
  33.             e.printStackTrace();   
  34.         } finally {   
  35.             System.exit(0);   
  36.         }   
  37.     }   
  38.     public void onLowMemory() {   
  39.         super.onLowMemory();       
  40.         System.gc();   
  41.     }    
  42. }  

在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)
如:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this); 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值