启动活动的最佳写法

时间:2021-10-13 16:46:57

启动活动的方法相信你已经非常熟悉了,首先通过 Intent 构建出当前的“意图” ,然后
调用 startActivity()或 startActivityForResult()方法将活动启动起来,如果有数据需要从一个活
动传递到另一个活动,也可以借助 Intent 来完成。
假设 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 中添加了一个 actionStart()方法,在这个方法中完成了 Intent 的构
建,另外所有 SecondActivity 中需要的数据都是通过 actionStart()方法的参数传递过来的,然
后把它们存储到 Intent 中,最后调用 startActivity()方法启动 SecondActivity。
这样写的好处在哪里呢?最重要的一点就是一目了然,SecondActivity 所需要的数据全
部都在方法参数中体现出来了,这样即使不用阅读 SecondActivity 中的代码,或者询问负责
编写 SecondActivity 的同事,你也可以非常清晰地知道启动 SecondActivity 需要传递哪些数
据。 另外, 这样写还简化了启动活动的代码, 现在只需要一行代码就可以启动 SecondActivity,
如下所示:
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SecondActivity.actionStart(FirstActivity.this, “data1”, “data2”);
}
});
养成一个良好的习惯,给你编写的每个活动都添加类似的启动方法,这样不仅可以让启
动活动变得非常简单,还可以节省不少你同事过来询问你的时间。