知晓当前是哪一个活动
试想,若有几十个activity,我们如何知道应用显示的当前界面是对应哪一个文件的代码? 答案是: 没进入一个活动,可以让其打印信息诉你。还要对每个代码进行修改吗?继承可以减少这个重复操作。
建立BaseActivity.java
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity",getClass().getSimpleName());
}
}
随时退出程序
建立一个饿汉式单例模式ActivityAcollector类来收集所有的活动,需要时可以全部销毁。
public class ActivityCollector {
public static List<AppCompatActivity> activities = new ArrayList<AppCompatActivity>();
public static void removeActivity(AppCompatActivity activity){
activities.remove(activity);
}
public static void finishAll(){
for (AppCompatActivity activity: activities){
if (!activity.isFinishing()){
activity.finish();
}
}
}
}
启动活动的最佳方式
假设Main2Activity需要两个非常重要的参数,在启动Main2Activity时必须传递过来,那么我们可能这样写
Intent intent = new Intent(MainActivity.this,Main2Activity);
intent.putExtra("param1","data1");
intent.putExtra("param2","data2");
startActivity(intent);
但若我们不知道Main2Activity需要传递哪些数据怎么办?
我们可以在Main2Activity添加一个actionStart的方法,自己完成启动。
public class Main2Activity extends BaseActivity {
...
public static void actionStart(Context context,String data1,String data2){
Intent intent = new Intent(context,Main2Activity.class);
intent.putExtra("param1",data1);
intent.putExtra("param2",data2);
context.startActivity(intent);
}
...
参考
第一行代码