简单方法
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
}
复杂点的
1.是写一个类
mport android.app.Activity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Le on 2016/8/15.
*/
public class ActivityCollector {
private static List<Activity> list =new ArrayList<Activity>();
public static void addActivity(Activity activity){
list.add(activity);
}
public static void removeActivity(Activity activity){
list.remove(activity);
}
public static void finishAll(){
for (Activity activity:list){
if (activity!=null){
activity.finish();
}
}
}
}
2.在BaseActivity中设置
public void onCreate(Bundle arg0) {
super.onCreate(arg0);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//去除title
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// //去掉Activity上面的状态栏
// getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN);
// //设置状态栏、导航栏变透明
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//状态栏
// 加载布局
// int layoutid=getLayout();
// setContentView(getLayout());
//一键删除的添加
ActivityCollector.addActivity(this);
// 找控件
// findView();
// //设置数据
// setData();
// // 设置监听
// setListener();
}
@Override
protected void onDestroy() {
//销毁时从集合移除
ActivityCollector.removeActivity(this);
super.onDestroy();
}
@Override
protected void onDestroy() {
//销毁时从集合移除
ActivityCollector.removeActivity(this);
super.onDestroy();
}
最后退出时需要
ActivityCollector.finishAll();
3。更好的方式 加载栈里边
一个类
package com.tangcco.jd;
import java.util.Stack;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
public class AppManager {
private static Stack<Activity> mActivityStack;
private static AppManager mAppManager;
private AppManager() {
}
/**
* 单一实例
*/
public static AppManager getInstance() {
if (mAppManager == null) {
mAppManager = new AppManager();
}
return mAppManager;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
if (mActivityStack == null) {
mActivityStack = new Stack<Activity>();
}
mActivityStack.add(activity);
}
/**
* 获取栈顶Activity(堆栈中最后一个压入的)
*/
public Activity getTopActivity() {
Activity activity = mActivityStack.lastElement();
return activity;
}
/**
* 结束栈顶Activity(堆栈中最后一个压入的)
*/
public void killTopActivity() {
Activity activity = mActivityStack.lastElement();
killActivity(activity);
}
/**
* 结束指定的Activity
*/
public void killActivity(Activity activity) {
if (activity != null) {
mActivityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 结束指定类名的Activity
*/
public void killActivity(Class<?> cls) {
for (Activity activity : mActivityStack) {
if (activity.getClass().equals(cls)) {
killActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void killAllActivity() {
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
if (null != mActivityStack.get(i)) {
mActivityStack.get(i).finish();
}
}
mActivityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
killAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
}
baseActivity,
package com.tangcco.jd.ui.base;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.tangcco.jd.AppManager;
import com.tangcco.jd.config.Constants;
import com.tangcco.jd.image.ImageLoaderConfig;
public abstract class BaseActivity extends Activity {
public static final String TAG = BaseActivity.class.getSimpleName();
protected Handler mHandler = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
AppManager.getInstance().addActivity(this);
if (!ImageLoader.getInstance().isInited()) {
ImageLoaderConfig.initImageLoader(this, Constants.BASE_IMAGE_CACHE);
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
/**
* 绑定控件id
*/
protected abstract void findViewById();
/**
* 初始化控件
*/
protected abstract void initView();
/**
* 通过类名启动Activity
*
* @param pClass
*/
protected void openActivity(Class<?> pClass) {
openActivity(pClass, null);
}
/**
* 通过类名启动Activity,并且含有Bundle数据
*
* @param pClass
* @param pBundle
*/
protected void openActivity(Class<?> pClass, Bundle pBundle) {
Intent intent = new Intent(this, pClass);
if (pBundle != null) {
intent.putExtras(pBundle);
}
startActivity(intent);
}
/**
* 通过Action启动Activity
*
* @param pAction
*/
protected void openActivity(String pAction) {
openActivity(pAction, null);
}
/**
* 通过Action启动Activity,并且含有Bundle数据
*
* @param pAction
* @param pBundle
*/
protected void openActivity(String pAction, Bundle pBundle) {
Intent intent = new Intent(pAction);
if (pBundle != null) {
intent.putExtras(pBundle);
}
startActivity(intent);
}
}