在开发中,我们通常都会建一个BaseActivity继承Activity,而我们其他的Activity只要继承BaseActivity就可以,那么BaseActivity到底有什么作用呢?很简单,开发中我们经常都要获取屏幕的宽高,但是如果有多个Activity都需要获取屏幕的宽高呢?那每个Activity都要重复获取,多了很多不必要的代码,这时候就需要用到BaseActivity了。
当然BaseActivity可不止有这个作用,在开发中,也有一个需求,就是我们无论在哪个界面,有时候用户需要直接退出所有Activity,又该如何完成呢?这时候也需要用到BaseActivity。
我们再想想,在Activity中Intent是使用的非常频繁的,如果要传递数据,而如果Activity太多,且有同时几个Activity同时向一个Activity传递数据,我们又该如何分辨哪个数据是从哪个Activity传递过来的呢,BaseActivity又派上用场了,我们可以将Intent封装到BaseActivity的一个方法中。打印的时候打印this,就可以显示是从哪个Acitivity传递过来的数据了。下面是代码:
package com.example.neteworknews.activity;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
public class BaseActivity extends Activity {
ArrayList<Activity> activities = new ArrayList<Activity>();
/**屏幕宽*/
public static int SCREEN_WIDTH;
/**屏幕高*/
public static int SCREEN_HEIGHT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WindowManager manager = getWindowManager();
Display display = manager.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
SCREEN_WIDTH = dm.widthPixels;
SCREEN_HEIGHT = dm.heightPixels;
addActivity();
}
@Override
protected void onDestroy() {
super.onDestroy();
removeActivity();
}
public void addActivity() {
activities.add(this);
}
public void removeActivity() {
activities.remove(this);
}
/**
* 结束所以活动
*/
public void finishAllAcitivity() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
/**
* 跳转
*/
public void startAction(@SuppressWarnings("rawtypes") Class cls,
String name, String value) {
Intent intent = new Intent(this, cls);
intent.putExtra(name, value);
startActivity(intent);
}
}
当然,BaseActivity不止这些作用,这就需要我们自己去发掘了