App主页面点击返回键,退出App

一、前言:

在 App 主页中,连续2 秒内点击多次退出 App。

   private long firstTime = 0;
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        long secondTime = System.currentTimeMillis();
 
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (secondTime - firstTime < 2000) {
                 //建议使用这个
                ActivityCollector.finishAll();
               // System.exit(0);
            } else {
                Toast.makeText(getApplicationContext(), "再按一次退出APP", Toast.LENGTH_SHORT).show();
                firstTime = System.currentTimeMillis();
            }
 
            return true;
        }
 
        return super.onKeyDown(keyCode, event);
    }

二、ActivityCollector管理器

1. activity 集合:

public class ActivityCollector {

    /**
     * 创建一个集合保存
     */
    public static List activities = new ArrayList<>();



    /**
     * 获取 Activity数量
     * @param
     */
    public static int getActivity(){
      return activities.size();
    }
    /**
     * 添加 Activity
     * @param activity
     */
    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    /**
     * 移除 Activity
     * @param activity
     */
    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }

    /**
     * 移除所有 Activity
     *
     */
    public static void finishAll(){
        for (Activity activity:activities){
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
        activities.clear();
    }
}
在活动管理器中,我们通过一个Activity的List来暂存活动,addActivity()方法向其中添加活动,removeActivity()方法移除活动,最后提供了一个finishAll()方法用于将List中的活动全部销毁。

2. activity 管理器使用:

/**
 * Created by luo on 2019/8/7.
 */

public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //添加创建的 Activity
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //移除创建的 Activity
        ActivityCollector.removeActivity(this);
    }
}

你可能感兴趣的:(App主页面点击返回键,退出App)