您的位置:首页 > 移动开发

统一管理Activity,响应app退出

2014-10-23 15:40 316 查看
之前,在Activitity中通过按键2次退出应用,但是有的时候按了2次不能退出。于是,自己想了一个方法,创建一个类,统一管理Activity。

ActivityInstanceManager.java

package com.chinabuye.android.activity;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;

public class ActivityInstanceManager {
/******** 用于存放所有Activitiy类的集合 **********/
public static List<Activity> activityList = new ArrayList<Activity>();
/***** 单利管理类 *******/
private static ActivityInstanceManager manager;

private ActivityInstanceManager() {
}

public static ActivityInstanceManager getActivityInstanceManager() {
if (manager == null) {
manager = new ActivityInstanceManager();
}
return manager;
}

/**
* 添加Activity的方法
*
* @param activity
*/
public void addActivity(Activity activity) {
activityList.add(activity);
}

/**
* 退出应用的方法
*/
public void exit() {
for (Activity at : activityList) {
at.finish();
}
System.exit(0);
activityList.clear();
}
}


每个Activity创建的时候,调用下面的方法

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category);
/*** 管理Activity ****/
manageActivity();
....


在要退出应用的Activity中,添加返回按键监听。

// 手机返回键回调
private long mExitTime;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (side_drawer.isMenuShowing() || side_drawer.isSecondaryMenuShowing()) {
side_drawer.showContent();
} else {
<span style="color:#ff6666;">if ((System.currentTimeMillis() - mExitTime) > 2000) {
Toast.makeText(this, R.string.press_again_to_exit, Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
} else {
ActivityInstanceManager.getActivityInstanceManager().exit();
}</span>
}

return true;
}
// 拦截MENU按钮点击事件,让他无任何操作
if (keyCode == KeyEvent.KEYCODE_MENU) {
return true;
}
return super.onKeyDown(keyCode, event);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: