Activity(活动)的最佳实践

来源:互联网 发布:淘宝多个商品能分开送 编辑:程序博客网 时间:2024/05/16 10:47

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


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

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


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

public class BaseActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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");

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



0 0
原创粉丝点击