activity基类 与 activity堆栈管理

1.activity基类

/**

 * activity 基类 提供了一系列的抽象方法
 * 
 * @author 王永迪 2015.3.6
 */
public abstract class BaseActivity extends Activity {
ActivitiesManager activitiesManager;

       /**     所有初始化代码放在onCreate中,启动代码放在onResume中      */
@Override
protected void onCreate(Bundle savedInstanceState) {
MobclickAgent.updateOnlineConfig(this);
super.onCreate(savedInstanceState);
activitiesManager = new ActivitiesManager();
activitiesManager.getInstance();
activitiesManager.pushActivity(this);
initView();
initDate();
}
   
/**
* 开启activity
*/
/** 无bundle 不关闭 */
public void JumpActivity(Class<?> activity) {
JumpActivity(activity, false);
}


/** 无bundle 关闭 */
public void JumpActivity(Class<?> activity, boolean needFinish) {
JumpActivity(activity, null, needFinish);
}


/** 有bundle 不关闭 */
public void JumpActivity(Class<?> activity, Bundle bdl) {
JumpActivity(activity, bdl, false);
}


/** 传送bundle类型 */
public void JumpActivity(Class<?> activity, Bundle bdl, boolean needFinish) {
Intent intent = new Intent(this, activity);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
if (null != bdl)
intent.putExtras(bdl);
startActivity(intent);
if (needFinish) {
this.finish();
}
}


/** activity 跳转 */
public void JumpActivityForResult(Class<?> activity, int requestCode) {
Intent intent = new Intent(this, activity);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivityForResult(intent, requestCode);
}


private static final String SP_NAME = "settings";


/**
* 共享存储,存储boolean类型

* @param context
* @param key
* @param value
*            boolean
*/
public void setSPBoolean(Context context, String key, boolean value) {
SharedPreferences preferences = context.getSharedPreferences(SP_NAME,
Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putBoolean(key, value);
editor.commit();
}


/**
* 共享存储,存储String类型

* @param context
* @param key
* @param value
*            String
*/
public void setSPString(Context context, String key, String value) {
SharedPreferences preferences = context.getSharedPreferences(SP_NAME,
Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString(key, value);
editor.commit();
}


/**
* 共享存储,存储int类型

* @param context
* @param key
* @param value
*            int
*/
public void setSPInt(Context context, String key, int value) {
SharedPreferences preferences = context.getSharedPreferences(SP_NAME,
Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putInt(key, value);
editor.commit();
}


/**
* 共享存储,读取指定key的boolean值

* @param context
* @param key
* @return
*/
public boolean getSPBoolean(Context context, String key) {
SharedPreferences preferences = context.getSharedPreferences(SP_NAME,
Context.MODE_PRIVATE);
boolean value = preferences.getBoolean(key, false);
return value;
}


/**
* 共享存储,读取指定key的String值

* @param context
* @param key
* @return
*/
public String getSPString(Context context, String key) {
SharedPreferences preferences = context.getSharedPreferences(SP_NAME,
Context.MODE_PRIVATE);
return preferences.getString(key, null);
}


/**
* 共享存储,读取指定key的int值

* @param context
* @param key
* @return
*/
public int getSPInt(Context context, String key) {
SharedPreferences preferences = context.getSharedPreferences(SP_NAME,
Context.MODE_PRIVATE);
return preferences.getInt(SP_NAME, 0);
}


/** 对外界提供设置set共享存储方法,设置和获取共享内存数据 */
public void setSP(Context context, String fileName, String name,
boolean value) {
SharedPreferences preferences = context.getSharedPreferences(fileName,
Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putBoolean(name, value);
editor.commit();
}


/** 对外界提供设置get共享存储方法,设置和获取共享内存数据 */
public boolean getSP(Context context, String fileName, String name) {
SharedPreferences preferences = context.getSharedPreferences(fileName,
Context.MODE_PRIVATE);
boolean value = preferences.getBoolean(name, false);
return value;
}


/** Activity name */
public abstract String getActivityName();


/** 初始化视图显示 */
public abstract void initView();


/** 初始化数据显示 */
public abstract void initDate();


/**
* 从EditText 获取字符串

* @param editText
*/
public String getEdittext(EditText editText) {
return editText.getText().toString().trim();
}


/**
* 从Textview 获取字符串

* @param Textview
*/
public String getTextView(TextView textView) {
return textView.getText().toString().trim();
}


/**
* 从资源文件中获取字符串

* @param str
*/
public String getResString(int str) {
return this.getResources().getString(str);
}


/** activity 标记对象 */
public String TAG = getClass().getSimpleName();


/** activity 实现友盟的进入页面标记方法 */
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
MobclickAgent.onResume(this);
MobclickAgent.onPageStart(TAG);
Utils.LOGD(TAG, "这个页面继承了我并且开启" + TAG);
}


/** activity 实现友盟的离开页面标记方法 */
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
MobclickAgent.onPause(this);
MobclickAgent.onPageEnd(TAG);
Utils.LOGD(TAG, "这个页面继承了我但是离开" + TAG);
}
    /** activity 出栈 */
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
activitiesManager.popActivity();
}

}

2.activity堆栈管理类

/**
 * activity 管理类
 * 
 * @author wyd 2015.3.7
 */
public class ActivitiesManager {


private static final String TAG = "ActivitiesManager";
private static Stack<Activity> mActivityStack;
private static ActivitiesManager mActivitiesManager;
public ActivitiesManager() {
// TODO Auto-generated constructor stub
}
/** 启动时检测堆栈对象 没有则去创建想对应对象 */
public ActivitiesManager getInstance() {
if (null == mActivitiesManager) {
mActivitiesManager = new ActivitiesManager();
if (null == mActivityStack) {
mActivityStack = new Stack<Activity>();
}
}
return mActivitiesManager;
}


/** 获取到activity集合大小 */
public int stackSize() {
return mActivityStack.size();
}


/** 获取到当前栈顶的活动 */
public Activity getCurrentActivity() {
Activity activity = null;


try {
activity = mActivityStack.lastElement();
} catch (Exception e) {
return null;
}


return activity;
}


/** 弹出activity 栈顶 */
public void popActivity() {
Activity activity = mActivityStack.lastElement();
if (null != activity) {
Utils.LOGD(TAG, "popActivity-->"
+ activity.getClass().getSimpleName());
activity.finish();
mActivityStack.remove(activity);
activity = null;
}
}


/** 活动出站 */
public void popActivity(Activity activity) {
if (null != activity) {
Utils.LOGD(TAG, "popActivity-->"
+ activity.getClass().getSimpleName());
// activity.finish();
mActivityStack.remove(activity);
activity = null;
}
}


/** 活动入栈 */
public void pushActivity(Activity activity) {
mActivityStack.add(activity);
Utils.LOGD(TAG, "pushActivity-->" + activity.getClass().getSimpleName());
}


/** 出栈所有活动 */
public void popAllActivities() {
while (!mActivityStack.isEmpty()) {
Activity activity = getCurrentActivity();
if (null == activity) {
break;
}
activity.finish();
popActivity(activity);
}
}


/** 弹出特定的活动 */
public void popSpecialActivity(Class<?> cls) {
try {
Iterator<Activity> iterator = mActivityStack.iterator();
Activity activity = null;
while (iterator.hasNext()) {
activity = iterator.next();
if (activity.getClass().equals(cls)) {
activity.finish();
iterator.remove();
activity = null;
}
}
} catch (Exception e) {


}
}


/** 查看当前的所有活动 */
public void peekActivity() {
for (Activity activity : mActivityStack) {
if (null == activity) {
break;
}
Utils.LOGD(TAG, "peekActivity()-->"
+ activity.getClass().getSimpleName());
}
}


}

你可能感兴趣的:(activity基类 与 activity堆栈管理)