最佳实践
- 知晓当前是在哪一个活动
有时,我们运行的App中有很多个活动,我们并不知道手机上面显示的界面对应众多Activity中的哪一个
解决办法:首先新建BaseActivity继承Activity并且重写onCreate()
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
Log.d("BaseActivity", getClass().getSimpleName());
}
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
然后让我们的Activity继承BaseActivity就可以了
- 随时随地退出App
我们想实现的效果是在应用程序中的任意一个Activity都能finish掉所有的Activity,这样我们就不用连续的按back键退出程序了
新建ActivityCollector类作为活动管理器
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();
}
}
}
}
接着我们修改BaseActivity中的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
Log.d("BaseActivity", getClass().getSimpleName());
**ActivityCollector.addActivity(this);**
}
protected void onDestroy() {
super.onDestroy();
**ActivityCollector.removeActivity(this);**
}
- 启动活动的最佳写法
SecondActivity中的代码
public class SecondActivity extends BaseActivity {
public static void actionStart(Context context, String day, String month){
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", day);
intent.putExtra("param2", month);
context.startActivity(intent);
}
.......
}
那么在FirstActivity中是这样启动SecondActivity的
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");