在我们日常开发当中你一定为无缘无故的内存泄漏而烦恼,或者因为多个Activity互相跳转而烦恼,这时候我们就需要一个利器-ActManager.有了这个帮助类我们就可以省去静态去写一些activity启动模式了。
##设置Actmanager为静态变量:
因为我们全局只需要一个Actmaanager,所有我们把它设置为静态变量,放在静态区域.
```
private static ActManager instance = new ActManager();
public static ActManager Instance() {
return instance;
}
```
##设置保护重复跳转
```
/**
* 防止页面短时间重复跳转
*
* @return true:可以跳转 false:不跳转
*/
private boolean checkForward(Context context) {
Activity activity = null;
boolean flag = true;
try {
activity = (Activity) context;
} catch (Exception e) {
Logger.output("Warning!!! ApplicationContext");
//说明是ApplicationContext
}
long time = Calendar.getInstance().getTimeInMillis();
if (null != activity) {
if (null != lastAct) {
//如果是相同activity,并且在150ms内跳转多次,则屏蔽多次跳转
if (time - lastForwardTime < 150 && activity == lastAct) {
flag = false;
}
}
}
lastForwardTime = time;
lastAct = activity;
return flag;
}
```
##设置基础跳转方法
intent 跳转
```
/**
* 跳转至下一页面--intent跳转
* 可以调系统相册等
* @param packageContext context
* @param intent intent
*/
public void forwardActivity(Context packageContext, Intent intent) {
if (checkForward(packageContext)) {
packageContext.startActivity(intent);
}
}
```
指定类名跳转
```
/**
* 跳转至下一页面
*
* @param packageContext context
* @param cls class
*/
public void forwardActivity(Context packageContext, Class<?> cls) {
if (checkForward(packageContext)) {
Intent intent = new Intent(packageContext, cls);
packageContext.startActivity(intent);
}
}
```
带参数跳转,这个参数可以是String,int,long,double,boolean 我只举一个String的例子
```
/**
* 跳转至下一页面, 传递 String参数
*/
public void forwardActivity(Context packageContext, Class<?> cls, String key, String extra) {
if (checkForward(packageContext)) {
Intent intent = new Intent(packageContext, cls);
intent.putExtra(key, extra);
packageContext.startActivity(intent);
}
}
```
获取当前activity
```
/**
* 获取当前的 activity
*
* @return act
*/
public Activity currentActivity() {
if (activityStack == null || activityStack.isEmpty()) {
return null;
}
return activityStack.lastElement();
}
```
Activity入栈,一般放在Base类的onCreate()方法里
```
/**
* 将该 activity 入画面栈
*
* @param activity act
*/
public void pushActivity(Activity activity) {
if (activityStack == null) {
act
##设置Actmanager为静态变量:
因为我们全局只需要一个Actmaanager,所有我们把它设置为静态变量,放在静态区域.
```
private static ActManager instance = new ActManager();
public static ActManager Instance() {
return instance;
}
```
##设置保护重复跳转
```
/**
* 防止页面短时间重复跳转
*
* @return true:可以跳转 false:不跳转
*/
private boolean checkForward(Context context) {
Activity activity = null;
boolean flag = true;
try {
activity = (Activity) context;
} catch (Exception e) {
Logger.output("Warning!!! ApplicationContext");
//说明是ApplicationContext
}
long time = Calendar.getInstance().getTimeInMillis();
if (null != activity) {
if (null != lastAct) {
//如果是相同activity,并且在150ms内跳转多次,则屏蔽多次跳转
if (time - lastForwardTime < 150 && activity == lastAct) {
flag = false;
}
}
}
lastForwardTime = time;
lastAct = activity;
return flag;
}
```
##设置基础跳转方法
intent 跳转
```
/**
* 跳转至下一页面--intent跳转
* 可以调系统相册等
* @param packageContext context
* @param intent intent
*/
public void forwardActivity(Context packageContext, Intent intent) {
if (checkForward(packageContext)) {
packageContext.startActivity(intent);
}
}
```
指定类名跳转
```
/**
* 跳转至下一页面
*
* @param packageContext context
* @param cls class
*/
public void forwardActivity(Context packageContext, Class<?> cls) {
if (checkForward(packageContext)) {
Intent intent = new Intent(packageContext, cls);
packageContext.startActivity(intent);
}
}
```
带参数跳转,这个参数可以是String,int,long,double,boolean 我只举一个String的例子
```
/**
* 跳转至下一页面, 传递 String参数
*/
public void forwardActivity(Context packageContext, Class<?> cls, String key, String extra) {
if (checkForward(packageContext)) {
Intent intent = new Intent(packageContext, cls);
intent.putExtra(key, extra);
packageContext.startActivity(intent);
}
}
```
获取当前activity
```
/**
* 获取当前的 activity
*
* @return act
*/
public Activity currentActivity() {
if (activityStack == null || activityStack.isEmpty()) {
return null;
}
return activityStack.lastElement();
}
```
Activity入栈,一般放在Base类的onCreate()方法里
```
/**
* 将该 activity 入画面栈
*
* @param activity act
*/
public void pushActivity(Activity activity) {
if (activityStack == null) {
act