一. 进入一个新的Activity时, 如何知道这是哪个Activity
首先需要新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
}
}
接下来我们需要让BaseActivity成为整个项目中所有活动的父类
二. 随时随地退出程序
首先新建一个ActivityCollector类作为Activity管理器
public class ActivityCollector {
public static List<Activity> activities = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
在其他Activity中就可以这样写了
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
想在哪里退出, 直接调用 ActivityCollector.finishAll(); 就可以退出了
三. 团队开发中Activity 调整中的传值问题
假设SecondActivity中需要用到两个非常重要的字符串参数,在启动SecondActivity的时候必须要传递过来,那么我们很容易会写出如下代码
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("param1", "data1");
intent.putExtra("param2", "data2");
startActivity(intent);
在团队开发中, 有可能 SecondActivity 类, 不是我写的, 但我负责的功能中要启动SecondActivity , 我就要知道 SecondActivity 需要什么参数, 传统方式, 只有去看 SecondActivity 源码, 才知道 SecondActivity 需要什么参数, 不如试试下面这种方式:
public class SecondActivity extends BaseActivity {
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
}
这样, 我们在启动 SecondActivity 时 就可以直接这样写了
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");