android完全退出程序的实践

来源:互联网 发布:最好股指期货交易软件 编辑:程序博客网 时间:2024/06/06 12:48

   其实左思右想,完全退出程序是个比较难以解决的问题,尤其对于我这样的Android小白而言。在看了很多人的博客后,我决定做一下总结。

   首先我相信Android程序并不是只有一个Activity的,感觉那样做也不现实,所以若想完全退出程序必须kill掉每个Activity。所以这就是本文的主线!

   首先奉上存储每一个Activity并进行添加和kill的代码,写一个实体类:

import java.util.LinkedList;
import java.util.List;


import android.app.Activity;
import android.app.Application;




public class ExitApplication extends Application{
// 保存需要Kill的程序中的Activity
private List<Activity> activityList = new LinkedList<Activity>();

private static ExitApplication exitInstance;
// 初始化的方法
public static ExitApplication getInstance(){
if(exitInstance == null){
exitInstance = new ExitApplication();
}
   return exitInstance;
}
// 将Activity添加到List中
public void addActivity(Activity activity){
activityList.add(activity);
}
// 退出
public void exit(){
for(Activity activity:activityList){
activity.finish();
}
System.exit(0);
}
}

其实这里面用了一个单例模式,为的是保护List<Activity>不被外界访问。

下面就是你在代码中需要做的,在每一个Activity的onCreate()方法中,调用你所定义的添加Activity到List中的方法,如下:

ExitApplication.getInstance().addActivity(activity);

参数activity即为当前你所在的Activity,把它添加到List中。

这个时候来个比较合适的操作,就是双击退出操作,代码如下:

/** 
* 菜单、返回键响应 
*/  

@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) {  
   // TODO Auto-generated method stub  
   if(keyCode == KeyEvent.KEYCODE_BACK)  
      {    
          exitBy2Click();      //调用双击退出函数  
      }  
   return false;  
}  
/** 
* 双击退出函数 
*/  

private static Boolean isExit = false;  
 
private void exitBy2Click() {  
   Timer tExit = null;  
   if (isExit == false) {  
       isExit = true;// 准备退出  
       Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();  
       tExit = new Timer();  
       tExit.schedule(new TimerTask() {  
           @Override  
           public void run() {  
               isExit = false; // 取消退出  
           }  
       }, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务  
 
   } else {  
   ExitApplication.getInstance().exit();
   System.exit(0);
   }  
}  

这时你会看到双击退出操作中调用实体类中的exit()方法!在你认为需要的Activity中添加这段代码,即可实现双击退出!我的建议是每一个Activity都加上这段代码,实现任何时刻都可以退出,这样会大大增强可操作性!

最后需要说的是,在你的每个Activity中的onDestroy()方法中加上finish();方法,保证每个Activity会被正确关闭!

0 0
原创粉丝点击