版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24675479/article/details/79621310
public class ActivityManager {
//增加删除操作多,栈是先进后出
public Stack<Activity> mActivities;
<span class="hljs-keyword">private</span> <span class="hljs-title">ActivityManager</span>() {
mActivities = <span class="hljs-keyword">new</span> Stack<>();
}
<span class="hljs-comment">//双重校验锁</span>
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">volatile</span> ActivityManager mInstance;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> ActivityManager <span class="hljs-title">getInstance</span>() {
<span class="hljs-keyword">if</span> (mInstance == <span class="hljs-keyword">null</span>) {
<span class="hljs-keyword">synchronized</span> (ActivityManager.class) {
<span class="hljs-keyword">if</span> (mInstance == <span class="hljs-keyword">null</span>) {
mInstance = <span class="hljs-keyword">new</span> ActivityManager();
}
}
}
<span class="hljs-keyword">return</span> mInstance;
}
<span class="hljs-javadoc">/**
* 添加
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">attach</span>(Activity activity) {
<span class="hljs-keyword">if</span> (activity != <span class="hljs-keyword">null</span>) {
mActivities.add(activity);
}
}
<span class="hljs-javadoc">/**
* 移除解绑 - 防止内存泄漏
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">detach</span>(Activity activity) {
<span class="hljs-keyword">int</span> size = mActivities.size();
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = size - <span class="hljs-number">1</span>; i >= <span class="hljs-number">0</span>; i--) {
Activity currentActivity = mActivities.get(i);
<span class="hljs-keyword">if</span> (currentActivity.getClass().equals(activity.getClass())) {
mActivities.remove(i);
size--;
i++;
}
}
}
<span class="hljs-javadoc">/**
* 移除指定的activity
* 先进后出
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">remove</span>(Activity activity) {
<span class="hljs-keyword">int</span> size = mActivities.size();
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = size - <span class="hljs-number">1</span>; i > <span class="hljs-number">0</span>; i--) {
Activity currentActivity = mActivities.get(i);
<span class="hljs-keyword">if</span> (currentActivity.getClass().equals(activity.getClass())) {
<span class="hljs-comment">//销毁当前activity</span>
currentActivity.finish();
mActivities.remove(i);<span class="hljs-comment">//从栈空间移除</span>
i++;
size--;
}
}
}
<span class="hljs-javadoc">/**
* 根据当前的类名进行关闭
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">finish</span>(Class<? extends Activity> activityClass){
<span class="hljs-keyword">int</span> size = mActivities.size();
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = size-<span class="hljs-number">1</span>; i > <span class="hljs-number">0</span>; i--) {
Activity activity = mActivities.get(i);
<span class="hljs-keyword">if</span>(activity.getClass().getCanonicalName().equals(activityClass.getCanonicalName())){
activity.finish();
mActivities.remove(i);
i++;
size--;
}
}
}
<span class="hljs-javadoc">/**
* 删除当前的activity
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">removeCurrent</span>() {
<span class="hljs-comment">/* Activity activity = mActivities.get(mActivities.size() - 1);
activity.finish();
mActivities.remove(mActivities.size()-1);*/</span>
Activity activity = mActivities.lastElement();
activity.finish();
mActivities.remove(activity);
}
<span class="hljs-javadoc">/**
* 移除所有的activity
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">removeAll</span>() {
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = mActivities.size() - <span class="hljs-number">1</span>; i >= <span class="hljs-number">0</span>; i--) {
Activity activity = mActivities.get(i);
activity.finish();
mActivities.remove(activity);
}
}
<span class="hljs-comment">//返回栈大小</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">size</span>() {
<span class="hljs-keyword">return</span> mActivities.size();
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24675479/article/details/79621310
public class ActivityManager {
//增加删除操作多,栈是先进后出
public Stack<Activity> mActivities;
<span class="hljs-keyword">private</span> <span class="hljs-title">ActivityManager</span>() {
mActivities = <span class="hljs-keyword">new</span> Stack<>();
}
<span class="hljs-comment">//双重校验锁</span>
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">volatile</span> ActivityManager mInstance;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> ActivityManager <span class="hljs-title">getInstance</span>() {
<span class="hljs-keyword">if</span> (mInstance == <span class="hljs-keyword">null</span>) {
<span class="hljs-keyword">synchronized</span> (ActivityManager.class) {
<span class="hljs-keyword">if</span> (mInstance == <span class="hljs-keyword">null</span>) {
mInstance = <span class="hljs-keyword">new</span> ActivityManager();
}
}
}
<span class="hljs-keyword">return</span> mInstance;
}
<span class="hljs-javadoc">/**
* 添加
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">attach</span>(Activity activity) {
<span class="hljs-keyword">if</span> (activity != <span class="hljs-keyword">null</span>) {
mActivities.add(activity);
}
}
<span class="hljs-javadoc">/**
* 移除解绑 - 防止内存泄漏
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">detach</span>(Activity activity) {
<span class="hljs-keyword">int</span> size = mActivities.size();
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = size - <span class="hljs-number">1</span>; i >= <span class="hljs-number">0</span>; i--) {
Activity currentActivity = mActivities.get(i);
<span class="hljs-keyword">if</span> (currentActivity.getClass().equals(activity.getClass())) {
mActivities.remove(i);
size--;
i++;
}
}
}
<span class="hljs-javadoc">/**
* 移除指定的activity
* 先进后出
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">remove</span>(Activity activity) {
<span class="hljs-keyword">int</span> size = mActivities.size();
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = size - <span class="hljs-number">1</span>; i > <span class="hljs-number">0</span>; i--) {
Activity currentActivity = mActivities.get(i);
<span class="hljs-keyword">if</span> (currentActivity.getClass().equals(activity.getClass())) {
<span class="hljs-comment">//销毁当前activity</span>
currentActivity.finish();
mActivities.remove(i);<span class="hljs-comment">//从栈空间移除</span>
i++;
size--;
}
}
}
<span class="hljs-javadoc">/**
* 根据当前的类名进行关闭
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">finish</span>(Class<? extends Activity> activityClass){
<span class="hljs-keyword">int</span> size = mActivities.size();
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = size-<span class="hljs-number">1</span>; i > <span class="hljs-number">0</span>; i--) {
Activity activity = mActivities.get(i);
<span class="hljs-keyword">if</span>(activity.getClass().getCanonicalName().equals(activityClass.getCanonicalName())){
activity.finish();
mActivities.remove(i);
i++;
size--;
}
}
}
<span class="hljs-javadoc">/**
* 删除当前的activity
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">removeCurrent</span>() {
<span class="hljs-comment">/* Activity activity = mActivities.get(mActivities.size() - 1);
activity.finish();
mActivities.remove(mActivities.size()-1);*/</span>
Activity activity = mActivities.lastElement();
activity.finish();
mActivities.remove(activity);
}
<span class="hljs-javadoc">/**
* 移除所有的activity
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">removeAll</span>() {
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = mActivities.size() - <span class="hljs-number">1</span>; i >= <span class="hljs-number">0</span>; i--) {
Activity activity = mActivities.get(i);
activity.finish();
mActivities.remove(activity);
}
}
<span class="hljs-comment">//返回栈大小</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">size</span>() {
<span class="hljs-keyword">return</span> mActivities.size();
}