Android中自定义activity管理类
目录
背景:
所需资源:android
2018年的时候,为了解决如下问题而自定义了一个activity管理类:
- 当关闭apk的时候关闭所有的activity
- 获取顶部activity
- 获取mainActivity或其他指定类
- 关闭出指定activity之外的其他activity
主要函数:
private static MyApplication instance; |
管理类:
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;
}
}