自定义Application-MyApplication,继承了常用一些方法,包括页面跳转之后页面栈,指定保留页面退出其他,获取当前最上层页面名称等常用方法
public class MyApplication extends Application {
private volatile ArrayList<Activity> mTempActivity = new ArrayList<Activity>();
public static Typeface typeFace;
private Context mResumeContext;
public Context getResumeContext() {
return mResumeContext;
}
public void setResumeContext(Context mResumeContext) {
this.mResumeContext = mResumeContext;
}
@Override
public void onCreate() {
super.onCreate();
SDKInitializer.initialize(this);
FMAgent.init(getApplication(), NetConstantValue.getService());
}
@Override
public void onTerminate() {
super.onTerminate();
clearTempActivityInBackStack();
}
public synchronized void addTempActivityInBackStack(Activity activity) {
mTempActivity.add(activity);
}
//退出所有页面
public synchronized void clearTempActivityInBackStack() {
Iterator<Activity> iterator = mTempActivity.iterator();
while (iterator.hasNext()) {
Activity activity = iterator.next();
activity.finish();
}
mTempActivity.clear();
}
//保留指定页面并退出其他页面
public synchronized void clearTempActivityInBackStack(Class<?> className) {
if (className != null) {
Iterator<Activity> iterator = mTempActivity.iterator();
while (iterator.hasNext()) {
Activity activity = iterator.next();
String class_name=className.getName();
if(null==class_name){
return;
}
if (!activity.getClass().getName().equals(class_name)) {
activity.finish();
}
}
Activity saveActivity = null;
for (Activity activity : mTempActivity) {
if (activity.getClass().getName().equals(className.getName())) {
saveActivity = activity;
}
}
mTempActivity.clear();
addTempActivityInBackStack(saveActivity);
}
}
public synchronized void clearTempActivityInBackStack2() {
for (int x = 0; x < mTempActivity.size() - 1; x++) {
Activity activity = mTempActivity.get(x);
activity.finish();
}
}
public MyApplication getApplication() {
// TODO Auto-generated method stub
return this;
}
public ArrayList<Activity> getAllActivities() {
return mTempActivity;
}
//获取最上层页面名称
public static String getTopActivityName(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
return cn.getClassName();
}
}