为了方便使用和管理Activity,于是建立两个类,一个抽象类BaseActivity作为所有activity的父类,一个ActivityManager用力管理activity,可作为以后项目的基类
1、ActivityManager
public class ActivityManager {
private static ActivityManager mActivityManager;
private List<Activity> mActivities=new ArrayList<Activity>();
//将构造方法私有化,所以不能通构造方法来初始化ActivityManager
private ActivityManager(){};
//采用单例模式初始化ActivityManager,使只初始化一次
public static ActivityManager getInstance(){
if(mActivityManager==null){
mActivityManager=new ActivityManager();
}
return mActivityManager;
}
//添加activity
public void addActivity(Activity activity){
mActivities.add(activity);
}
//移除activity
public void removeActivity(Activity activity){
mActivities.remove(activity);
}
//将activity全部关闭掉
public void clear(){
for(Activity activity:mActivities){
activity.finish();
}
}
}
public abstract class BaseActivity extends Activity{
//抽象化方法找控件id
public abstract void findId();
//抽象化方法设置监听器
public abstract void setListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//onCreate方法时,使用activityManager将此activity添加到list里面
ActivityManager.getInstance().addActivity(this);
}
@Override
public void setContentView(int layoutResID) {
// TODO Auto-generated method stub
super.setContentView(layoutResID);
findId();
setListener();
}
@Override
public void setContentView(View view) {
// TODO Auto-generated method stub
super.setContentView(view);
findId();
setListener();
}
@Override
public void setContentView(View view, LayoutParams params) {
// TODO Auto-generated method stub
super.setContentView(view, params);
findId();
setListener();
}
public void finishAll(){
ActivityManager.getInstance().clear();
}
}
使用示例
public class SecondActivity extends BaseActivity implements OnClickListener{
private Button mSendButton;
private static final String TAG="Secondctivity";
@Override
public void findId() {
mSendButton=(Button) findViewById(R.id.main_sendBtn);
}
@Override
public void setListener() {
mSendButton.setOnClickListener(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.main_sendBtn:
Toast.makeText(SecondActivity.this, "点击了", Toast.LENGTH_LONG).show();
Log.i(TAG, "点击了");
break;
default:
break;
}
}
}