1.Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口;一个Activity通常是一个单独的屏幕,Activity通常通过Intent来进行通信,Android中会维持一个Activity Stack. 当一个新Activity创建时,它就会放到栈顶,这个Activity就处于运行状态。
2.Service:服务,运行在手机后台,适合执行不需和用户交互还需长期运行的任务。
3.contentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过ContentResolver类从该内容提供者中获取或存入数据,它提供了一种跨进程数据共享方式,当数据被修改后,ContentResolver接口的notifyChange函数通知那些注册监控特定URI的ContentObserver对象,如果ContentProvider和调用者在同一个进程中,ContentProvider的方法(query/insert/update/delete等)和调用者在同一个线程中;如果ContentProvider和调用者不在同一进程,ContentProvider方法会运行在它自身进程的一个Binder线程中。
4.Broadcast Receiver:广播接受者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。
2.四大组件的生命周期和简单用法
1.Activity: onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory() onCreate():为Activity设置布局,此时界面还不可见; onStart():Activty可见但还不能与用户进行交互,不能获得焦点 onRestart():重新启动Activity时被回调 onResume():Activity可见并且可与用户进行交互 onPause():当前Activity暂停,不可与用户交互,但还可见,在新Activity启动前被系统调用保存现有的Activity中持久数据、停止动画等。 onStop():当Activity被新的Activity覆盖不可见时被系统调用 onDestory():当Activity被系统销毁杀掉或是由于内存不足时调用。
2.Service
1)onBind方式绑定的:onCreate->onBind->onUnBind->onDestory(不管调用bindService几次,onCreate只会调用一次,onStart不会被调用,建立连接后,service会一直运行,直到调用unBindService或是之前调用的bindService的Context不存在,系统会自动停止Service对应的onDestory会被调用) 2)startService启动的:onCreate->onStartCommand->onDestory(start多次,onCreate只会被调用一次,onStart会调用多次,该service会在后台运行,直至被调用stopService或是stopSelf) 3)又被启动又被绑定的服务,不管如何调用onCreate()只被调用一次,startService调用多少次 ,onStart就会被调用多少次,而unbindService不会停止服务,必须调用stopService或是stopSelf来停止服务,必须unbindService和stopService(stopSelf)同时都调用来才会停止服务。
3.BroadcastReceiver
1).动态注册:存活周期是在Context.registerReceiver和Context.unregisterReceiver之间,BroadcastReceiver每次收到广播都是使用注册传入的对象处理的。 2)静态注册:进程在的情况下,receiver会正常收到广播,调用onReceiver方法;生命周期只存活在onReceive函数中,此方法结束,broadcastReceiver就销毁了,onReceive()只有十几秒存活时间,在onReceive()内操作超过10s,就会报ANR。 进程不存在的情况,广播相应的进程会被拉活,Application.onCreate会被调用,再调用onReceive.
4.ContentProvider:应该和应用的生命周期一样,它属于系统应用,应用启动时,它会跟着初始化,应用关闭或被杀,它会跟着结束。