Android activity的管理Manager
我们在Android应用中如果正确的管理activity,以便于我们拿到Activity的对象或者正确的退出app呢?下面提供一个Manger类来管理我们的Activity,方法可以根据自己的需求进行添加,思路也比较简单,我们的管理类实现ActivityLifecycleCallbacks接口在相对应的生命周期中执行需要的操作,例如添加和移除activity,同时我们需要是一种数据结构去保存activity,可以是ArrayList或HashMap,以便于我们去对这些activity进行管理。废话不说上代码!
/*************************************
* 类名称:MyActivityManager
* 类描述:提供退出应用的方法
*
* @version: 1.0.0
* @author: 己师
* 实现Application.ActivityLifecycleCallbacks接口
**********************************/
public class MyActivityManager implements Application.ActivityLifecycleCallbacks {
private ArrayList<WeakReference<Activity>> sActivity = new ArrayList();
private MyActivityManager() {
}
private static class MY_ACTIVITY_MANAGER_INSTANCE {
private static final MyActivityManager MY_ACTIVITY_MANAGER = new MyActivityManager();
}
public static MyActivityManager getInstance() {
return MY_ACTIVITY_MANAGER_INSTANCE.MY_ACTIVITY_MANAGER;
}
private void add(Activity activity) {
if (activity != null) {
WeakReference<Activity> activityWeakReference = new WeakReference<>(activity);
sActivity.add(activityWeakReference);
}
}
private void remove(Activity activity) {
for (int i = 0, size = sActivity.size(); i < size; i++) {
WeakReference<Activity> activityWeakReference = sActivity.get(i);
Activity innerActivity = activityWeakReference.get();
if (innerActivity == activity) {
sActivity.remove(activityWeakReference);
break;
}
}
}
/**
* 获取MainActivity
*
* @return
*/
public MainActivity getMainActivity() {
for (int i = 0, size = sActivity.size(); i < size; i++) {
WeakReference<Activity> activityWeakReference = sActivity.get(i);
Activity activity = activityWeakReference.get();
if (activity instanceof MainActivity) {
return (MainActivity) activity;
}
}
return null;
}
/**
* finish掉所有Activity
*/
public void exitApp() {
for (int i = 0, size = sActivity.size(); i < size; i++) {
WeakReference<Activity> activityWeakReference = sActivity.get(i);
Activity activity = activityWeakReference.get();
if (activity != null) {
activity.finish();
}
}
if (sActivity != null && sActivity.size() > 0) {
sActivity.clear();
}
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//activity create时,添加activity
add(activity);
}
@Override
public void onActivityStarted(Activity activity) {
//activity start时,可以做一些操作,例如记录此activity回到前台的时间等
}
@Override
public void onActivityResumed(final Activity activity) {
//activity resume时,可以做一些操作,例如让一些后台任务重新开启,或者app切换到前台的时间等
}
@Override
public void onActivityPaused(Activity activity) {
//activity pause时,可以做一些操作,例如暂停一些后台任务
}
@Override
public void onActivityStopped(Activity activity) {
//activity stop时,可以做一些操作,例如记录app切换到后台的时间等
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
//保存状态
}
@Override
public void onActivityDestroyed(Activity activity) {
//activity destroy时,移除activity
remove(activity);
}
}