第 2 章 - Activity(活动)的最佳实践

下面是几种关于活动的最佳实践技巧,这些技巧在以后的工作中非常受用。

 

1.知晓当前是在哪一个活动

这个技巧将教会你,如何根据程序当前的界面就能判断这是哪一个活动。

第一步:新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法

public class BaseActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		Log.d("BaseActivity", getClass().getSimpleName());
	}
}

第二步:让其他Activity不再继承自Activity,而直接继承自BaseActivity。虽然项目中的活动不再直接继承自Activity,但是它们仍然完全继承了Activity的所有特性。

2.随时随地退出程序

思路十分简单,只需要用一个专门的集合类对所有的活动进行管理即可。

第一步:新建一个ActivityController类作为活动管理器

public class ActivityController {
	
	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){
			activity.finish();
		}
	}

}


第二步:

在onCreate()方法中添加activity

ActivityController.addActivity(this);

 

在onDestroy()方法中移除activity

ActivityController.removeActivity(this);

 

在任何地方退出程序调用:

ActivityController.finishAll();

 

3.启动活动的最佳写法

启动活动的方法大家都会,首先通过Intent构建出当前意图,然后调用startActivity()或者startActivityForResult()方法将活动启动,如果有数据传递,也可以借助Intent来完成。

我写这个的目的是解决这样一种窘境:我要从FirstActivity传递数据到SencodActivity,但是SecondActivity不是自己写的,需要询问编写者或者自己阅读代码,其实换一种写法,该问题迎刃而解。

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);
	}

这样写的好处一目了然,我不需要知道SencodActivity中具体代码细节,也不用询问代码编写者,只需要看该方法的参数就明了,这样写简化了启动活动的代码,启动代码如下:

SecondActivity.actionStart(FirstActivity.this,"data1","data2");

养成一个良好的习惯,给你编写的每个活动都添加类似的启动方法,这样不仅可以让启动活动变得异常简单,还可以省不少同事询问你的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值