Activity管理類

安卓開發(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ù)更新中)中找到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容