BaseActivity
开发中,如果有多个Activity需要完成一个相同的功能,那么就可以新建BaseActivity继承自Activity,然后所有的Activity继承自BaseActivity,只需要在BaseActivity中实现该功能即可。
BaseActivity还可以让我们立即判断出当前界面对应的Activity。只需要在BaseActivity的onCreate()方法中获取当前实例的类名,通过Log打印出即可。
package com.example.rex.activitytest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
/**
* Created by Rex on 2018/4/15.
*/
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName()); //打印当前实例的类名
}
}
活动管理器
ActivityCollecotor作为活动管理器,对所有的活动进行管理。我们通过List来暂存活动,然后提供addActivity()和removeActivity()用于从List中移除活动,最后,提供finishAll()用于将List中存储的所有活动销毁,退出程序。
package com.example.rex.activitytest;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Rex on 2018/4/15.
*/
public class ActivityCollector {
public static List<Activity> sActivities = new ArrayList<>();
public static void addActivity(Activity ac)
{
sActivities.add(ac);
}
public static void removeActivity(Activity ac)
{
sActivities.remove(ac);
}
public static void finishAll()
{
for(Activity ac : sActivities)
{
if(!ac.isFinishing()) ac.finish();
}
sActivities.clear();
}
}
由于是对所有Activity进行管理,还应该在BaseActivity中onCreate()和onDestroy()中加上相应语句,分别把当前Activity加入和移除集合。
package com.example.rex.activitytest;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
/**
* Created by Rex on 2018/4/15.
*/
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName()); //打印当前Activity类名
ActivityCollector.addActivity(this); //将当前Activity加入到活动管理器中
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this); //将当前Activity移除活动管理器
}
}