安卓開發(fā)一般都需要進行Activity的管理,常用操作老司機已為你封裝完畢,經(jīng)常有小伙伴問怎么進行管理,那我告訴你,你可以用這份工具進行管理,具體可以查看源碼,現(xiàn)在為你開車,Demo傳送門。
站點
管理和回收Activity → AppDavikActivityMgr
getScreenManager : 單例堆棧集合對象
removeActivity : 堆棧中銷毀并移除
removeAllActivity : 棧中銷毀并移除所有Act對象
currentActivity : 取當(dāng)前Act對象
getCurrentActivityName: 獲得當(dāng)前Act的類名
addActivity : 將Act納入推棧集合中
exitApp : 退出棧中所有Activity
具體路線
public class AppDavikActivityMgr {
//存儲ActivityStack
private static Stack<Activity> activityStack = new Stack<Activity>();
//單例模式
private static AppDavikActivityMgr instance;
/**
* 單列堆棧集合對象
* @return AppDavikActivityMgr 單利堆棧集合對象
*/
public static AppDavikActivityMgr getScreenManager() {
if (instance == null) {
synchronized (AppDavikActivityMgr.class){
if (instance == null) {
instance = new AppDavikActivityMgr();
}
}
}
return instance;
}
/**
* 堆棧中銷毀并移除
* @param activity 指定Act對象
*/
public void removeActivity(Activity activity) {
AppLogMessageMgr.i("AppDavikActivityMgr-->>removeActivity", activity != null ? activity.toString() : "");
if (null != activity) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 棧中銷毀并移除所有Act對象
*/
public void removeAllActivity() {
if (null != activityStack && activityStack.size() > 0) {
//創(chuàng)建臨時集合對象
Stack<Activity> activityTemp = new Stack<Activity>();
for (Activity activity : activityStack) {
if (null != activity) {
//添加到臨時集合中
activityTemp.add(activity);
//結(jié)束Activity
activity.finish();
}
}
activityStack.removeAll(activityTemp);
}
AppLogMessageMgr.i("AppDavikActivityMgr-->>removeAllActivity", "removeAllActivity");
System.gc();
System.exit(0);
}
/**
* 獲取當(dāng)前Act對象
* @return Activity 當(dāng)前act
*/
public Activity currentActivity() {
Activity activity = null;
if (!activityStack.empty()){
activity = activityStack.lastElement();
}
AppLogMessageMgr.i("AppDavikActivityMgr-->>currentActivity", activity + "");
return activity;
}
/**
* 獲得當(dāng)前Act的類名
* @return String
*/
public String getCurrentActivityName() {
String actSimpleName = "";
if (!activityStack.empty()) {
actSimpleName = activityStack.lastElement().getClass().getSimpleName();
}
AppLogMessageMgr.i("AppDavikActivityMgr-->>getCurrentActivityName", actSimpleName);
return actSimpleName;
}
/**
* 將Act納入推棧集合中
* @param activity Act對象
*/
public void addActivity(Activity activity) {
AppLogMessageMgr.i("AppDavikActivityMgr-->>addActivity", activity != null ? activity.toString() : "");
if (null == activityStack) {
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 退出棧中所有Activity
* @param cls
* @return void
*/
public void exitApp(Class<?> cls) {
AppLogMessageMgr.i("AppDavikActivityMgr-->>exitApp", "exitApp-->>占用內(nèi)存:" + Runtime.getRuntime().totalMemory());
while (true) {
Activity activity = currentActivity();
if (null == activity) {
break;
}
if (activity.getClass().equals(cls)) {
break;
}
removeActivity(activity);
}
System.gc();
System.exit(0);
}
}
終點站
好了,終點站到了,如果對本次旅途滿意的話,請給五星好評哦,沒關(guān)注的小伙伴輕輕點個上方的關(guān)注,畢竟老司機犧牲了很多時間才換來這么一份工具類,如果該工具類依賴其他工具類,都可以在我的史上最全的常用開發(fā)工具類收集(持續(xù)更新中)中找到。