一、Application
1、它是整个程序的入口
2、初始化工作
3、为整个应用的其它模块提供一个上下文环境
注:通常以单例的形式构建对象,因为oncreate()方法只会被执行一次,所以只需要在onCreate()初始化实例对象即可
二、Fragment
1、所有的fragment没有直接继承Fragment,而是继承BaseFragment,basefragment才真正地继承了Fragment。
原因:应用有很多的fragment,而这些fragment一定会有一些公共的行为,如果没有公共的fragment,那么所有的行为都需要在每个fragment中实现一遍,而如果一旦要改变公共的行为,那么所有的fragment都要改变。而如果有basefragment,那么只需要修改basefragment即可。如在onResume()和onPause()方法中添加一些友盟统计代码,而以后改用自己的统计代码,如果不写在basefragment中,则需要找到所有的功能fragment,修改所有的统计代码。而如果写在basefragment中,则只需要修改basefragment中的onResume()和onPause()方法
2、BaseFragment
主要作用就是为我们所有的fragment提供公共的行为或事件
三、Activity
1、BaseActivity
作用和basefragment作用完全一样,甚至作用更甚于basefragment,是为所有的activity提供公共的行为。
2、AppCompatActivity
实际开发中可以完全摒弃Activity和FragmentActivity而使用AppCompatActivity,它是support包中为我们提供的一个兼容类,它既兼容了Activity,也包含了FragmentActivity的功能,也包含了我们后续ActionBar和ToolBar的功能,所以是功能最全的一个activity,而且是兼容性最好,所以完全可以使用这个appcompatactivity。
3、比如在BaseActivity中声明一个TAG(public String TAG,在onCreate()方法中进行赋值TAG=getComponentName().getShortClassName()),那么在子类中,需要输出日志的时候就可以直接使用这个TAG,而不需要每个子类都声明。此时BaseActivity已经起了一点作用,后面它的作用将越来越大。其它方法则是一些空的生命周期方法的实现。
4、HomeActivity
继承BaseActivity,在Mainfest中注册时声明了一个特殊的启动模式叫SingleTask。首页,也就是整个应用的HomeActivity,通常来说都是SingleTask的启动模式。
1、主要是创建Fragment并且完成Fragment的切换,
2、创建服务、服务的启动
注:①实际开发中,一定是初始化完成所有的UI后,才去执行后面的具体业务逻辑。而只有在用到的时候再去findviewbyid是一种非常不好的习惯。
②小应用使用注解框架是没有问题的,但是大应用是不推荐使用注解框架的。首先,最主要的是因为注解框架对性能上是有消耗的,其次是不知道它在某些系统上会产生什么问题。而一旦产生问题,作为一个开发者很难去解决它。