我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。每次退出界面之后应用程序还在运行,今天查了下资料终于把这个问题给解决了,网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。
 
       
 Android按两次返回键,退出应用程序
 
  当我们按返回键时,都只是退出当前的activity,并不是退出整个应用程序,所以在这里我们试用一下方法退出应用程序;
 
        private long mExitTime ; //退出时间  
 
   //捕捉按键  
 
@Override  
 
public boolean onKeyDown(int keyCode, KeyEvent event) {  
 
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){  
 
        if ((System.currentTimeMillis() - mExitTime) > 2000 ) {  
               
 
            Toast.makeText(this, "再按一次退出应用程序", 				Toast.LENGTH_SHORT).show();  
 
            mExitTime = System.currentTimeMillis();  
 
        }else{  
 
            SysApplication.getInstance().exit();  
 
        }  
 
 
        return true;  
 
    }  
 
     return super.onKeyDown(keyCode, event);  
 
}  
 
import java.util.LinkedList; 
 
import java.util.List; 
 
import android.app.Activity; 
 
import android.app.AlertDialog; 
 
import android.app.Application; 
 
import android.content.DialogInterface; 
 
import android.content.Intent; 
  
 
public class SysApplication extends Application { 
 
    private List<Activity> mList = new LinkedList<Activity>(); 
 
    private static SysApplication instance; 
  
 
    private SysApplication() {   
 
    } 
 
    public synchronized static SysApplication getInstance() { 
 
        if (null == instance) { 
 
            instance = new SysApplication(); 
 
        } 
 
        return instance; 
 
    } 
 
    // add Activity  
 
    public void addActivity(Activity activity) { 
 
        mList.add(activity); 
 
    } 
  
 
    public void exit() { 
 
        try { 
 
            for (Activity activity : mList) { 
 
                if (activity != null) 
 
                    activity.finish(); 
 
            } 
 
        } catch (Exception e) { 
 
            e.printStackTrace(); 
 
        } finally { 
 
            System.exit(0); 
 
        } 
 
    } 
 
    public void onLowMemory() { 
 
        super.onLowMemory();     
 
        System.gc(); 
 
    }  
 
}
 
在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)如:
 
 
 
public void onCreate(Bundle savedInstanceState)
 
{
 
super.onCreate(savedInstanceState);
 
setContentView(R.layout.main);
 
SysApplication.getInstance().addActivity(this); 
 
}
 
 
  
 
          
            
          
             
已有   0 人发表留言,猛击->>  这里<<-参与讨论
          
             
ITeye推荐