Android中自定义activity管理类

Android中自定义activity管理类

编者:李国帅

qq:9611153 微信lgs9611153

时间:2020/11/26 

 

目录

Android中自定义activity管理类

背景:

主要函数:

管理类:

应用,创建一个基类包装对应功能:


背景:

所需资源:android

2018年的时候,为了解决如下问题而自定义了一个activity管理类:

  1. 当关闭apk的时候关闭所有的activity
  2. 获取顶部activity
  3. 获取mainActivity或其他指定类
  4. 关闭出指定activity之外的其他activity

 

主要函数:

private static MyApplication instance;
private
Context context;
private
Map<String, Activity> activityMap = new HashMap<String, Activity>();

@Override
public void onCreate() {
   
super.onCreate();
   
srcTable = new ArrayList<HashMap<String, Object>>();
}

// 添加Activity 到容器中
public void addActivity(String className, Activity activity) {
   
activityMap.put(className, activity);
}

// 遍历所有Activity 并finish
public void exit() {
   
for (Entry<String, Activity> entry : activityMap.entrySet()) {
        entry.getValue().finish()
;
   
}
    System.exit(
0);
}

 

 

管理类:


import java.util.LinkedList;

import java.util.List;

  

import android.app.Activity;

  

  /**

 * @author liguoshuai

 * @category 页面管理

 */

  public class AppActivityList {

   private List<Activity> activityList = new LinkedList<Activity>();

  

   // 添加Activity 到容器中

   public void addActivity(Activity newActivity) {

      for (Activity activity : activityList) {

         boolean same = activity.toString().contentEquals(newActivity.toString());

         if (same) {

            activityList.remove(activity);

            break;

         }

      }

      activityList.add(newActivity);// 重新加入到尾部

   }

  

   public Activity getTopActivity() {

      Activity topActivity = null;

      int lastPos = activityList.size() - 1;

      if (lastPos >= 0) {

         topActivity = activityList.get(lastPos);

      }

      return topActivity;

   }

  

   public void finishAll() {

      for (Activity activity : activityList) {

         if (activity != null) {

            activity.finish();

         }

      }

   }

  

   public void resetActivity(Activity except) {

      for (Activity activity : activityList) {

         boolean same = activity.toString().contentEquals(except.toString());

         if (!same) {

            if (activity != null) {

               activity.finish();

            }

         }

      }

   }

  

   public Activity getMainActivity() {

      for (Activity activity : activityList) {

         if (activity.getClass().getSimpleName().contentEquals("MainActivity")) {// singleton

            return activity;

         }

      }

      return null;

   }

  

   public Activity getLoginActivity() {

      for (Activity activity : activityList) {

         if (activity.getClass().getSimpleName().contentEquals("LoginActivity")) {// singleton

            return activity;

         }

      }

      return null;

   }

  

   public void removeActivity(Activity removeActivity) {

      int index = 0;

      for (Activity activity : activityList) {

         boolean same = activity.toString().contentEquals(removeActivity.toString());

         if (same) {

            break;

         }

         index++;

      }

      activityList.remove(index);

  

   }

  

   public void removeActivity(String activityName) {

      for (Activity activity : activityList) {

         if (activity == null)

            continue;

         String className = activity.getClass().getSimpleName();

         if (className.contentEquals(activityName)) {

            activity.finish();

         }

      }

   }

}

 

 

应用,创建一个基类包装对应功能:


import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.FragmentActivity;

/**
 * @author liguoshuai @category
 */
public class BaseActivity extends FragmentActivity implements Handler.Callback {
    public BaseActivity thisActivity;
    protected Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        thisActivity = this;// 窗口上下文
        mHandler = new Handler(this);
        MyApplication.getActivityList().addActivity(this);// 1
    }

    @Override
    protected void onDestroy() {
        // MyLog.i(TAG, " destroy!");
        MyApplication.getActivityList().removeActivity(this);// 1

        super.onDestroy(); // Always call the superclass
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        } else {
        }
    }

    @Override
    public void onResume() {

        SoftInput.hideSoftInput(thisActivity);
        super.onResume();
    }

    // 实现消息处理
    public Handler getMsgHandler() {
        return mHandler;
    }

    @Override
    public boolean handleMessage(Message msg) {
        switch (msg.what) {
        }
        return false;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值