1、知晓当前是哪一个活动
也就是让每一个活动启动的时候,都打印出活动名。代码如下:
Log.d(tag, getClass().getSimpleName());
一种方法就是在每一个活动都添加这行代码,还有一种方法是定义BaseActivity,在这个基类中执行这行代码,再让其他所有的活动都继承这个类。
效果如下:
2、随时随地退出程序
通过之前2.5的例子我们知道如果一个应用程序创建了很多的活动,按返回键退出很麻烦,需要点很多次。所以有没有办法可以在任何一个活动都能直接退出程序呢?(注意:System.exit(0)已测,是不行的,跟按返回键的效果一样)
实现方法是创建一个活动的集合类,统一管理所有活动。其实思路也不难理解:建一个ActivityCollector类,然后这个类有两个静态的方法:一个添加活动,另一个销毁所有活动。程序中所有的活动新建的时候都会存入这个类中,然后如果点击退出程序,这个类就会把所有的程序销毁。(然而错了,还需要一个方法可以销毁指定的活动,因为如果用户点击了返回键,那么这个活动还是会销毁的)
下面是具体的实现:
然后在BaseActivity中添加:
所以这里可以看到创建基类活动的好处了:如果要实现对活动的统一操作,直接在这个类中添加代码就可以,不用在每一个活动都添加这么麻烦。
然后定义一个按钮执行ActivityCollector.finishAll()就ok了。
3、启动活动的最佳写法
原来启动活动的写法是先表述一个意图(Intent),然后用startActivity或startActivityForResult启动之。如果有参数需要传递,只要把它们加到intent上就可以了,如下:
但是如果这个项目是多人完成的,实现这两个活动不是同一个人,那么实现FirstActivity的人就得阅读SecondActivity的代码,或者询问实现SecondActivity的人,需要传递什么参数过去,这样对效率肯定会有影响。如果在SecondActivity中定义下面的方法:
不仅对别人来说,更方便地了解SecondActivity需要什么参数,而且在其他活动的跳转代码只需一行:
于人于己都方便。