一.快速获取当前界面属于哪个活动
1.新建BaseActivity 继承自Activity,然后在BaseActivity 中重写onCreate()方法:
在onCreate方法中打印
Log.d("BaseActivity", getClass().getSimpleName());
2.让BaseActivity 成为项目中所有活动的父类
现在每当我们进入到一个活动的界面,该活动的类名就会被打印出来,这样我们就可以
时时刻刻知晓当前界面对应的是哪一个活动了。
二.快速注销和退出应用的实现
思路很简单:只需要用一个专门的集合类对所有的活动进行管理
在活动管理器中,我们通过一个List 来暂存活动,然后提供了一个addActivity()方法用
于向List 中添加一个活动,提供了一个removeActivity()方法用于从List 中移除活动,最后
提供了一个finishAll()方法用于将List 中存储的活动全部都销毁掉。
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();
}
}
}
}
public class BaseActivity extends 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);
}
}
在BaseActivity 的onCreate()方法中调用了ActivityCollector 的addActivity()方法,表明
将当前正在创建的活动添加到活动管理器里。然后在BaseActivity 中重写onDestroy()方法,
并调用了ActivityCollector 的removeActivity()方法,表明将一个马上要销毁的活动从活动管
理器里移除。
当活动执行finish()方法的时候就会调用
onDestroy方法
Button button3 = (Button) findViewById(R.id.button_3); button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ActivityCollector.finishAll(); } }); }
这样就可以快速结束所有的活动,如果觉得还不够干净可以加入杀当前进程的方法三.在不清楚活动所需参数时最佳启动写法
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
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
}
});只需要一行代码
养成一个良好的习惯,在写一个新的Activity的时候
就要考虑到别的活动过来的时候这个Activity需要什么参数 并且编写一个能让别的Activity能够快速启动所需活动的方法