从零开始学Android(七)

来源:互联网 发布:耳朵听力测试软件 编辑:程序博客网 时间:2024/04/30 01:48
  1. 知晓当前是在哪一个活动
    我们还是在ActivityTest项目的基础上修改,新建一个活动BaseActivity重写onCreate方法:
    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d("BaseActivity", getClass().getSimpleName());

接下来就是让其他的活动继承这个活动,这样所有活动就获得了输出类名的方法。

  1. 随时随地退出程序
    我们的程序需要一个随时注销或者退出的功能,新建ActivityCollector类作为活动管理器,代码如下:
public class ActivityCollector {    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();            }        }    }}

该类提供三个方法,分别的作用是添加活动,删除活动,销毁全部活动。
下面修改BaseActivity类中的代码重写onDestroy方法:

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

由以上代码可知一个活动在创建的时候,调用父类的onCreate方法就会将这个活动添加到活动管理器之中,销毁一个类时调用其父类onDestroy方法就会将该活动从活动管理器之中删除。这样,不论何时想要退出程序,只需要调用活动管理器ActivityCollector.finishAll方法,以ThirdActivity为例:

        Button button3 = (Button) findViewById(R.id.button_3);        button3.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                ActivityCollector.finishAll();            }        });
  1. 启动活动的最佳方法
    如果要在SecondActivity活动里获取两个数据,但是却不知道是什么数据,可以在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);    }

通过添加的actionStart方法,完成了对Intent的构建,另外启动SecondActivity活动所需要的数据都是通过actionStart方法传递的,然后把他们储存在Intent中,最后调用startActivity方法启动SecondActivity活动。
现在只需要一行代码就可以启动SecondActivity:

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