爲了方便使用和管理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;
}
}
}