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());
}
}
}