android中的四大组件

一、 首先是Activity
  Activity是与用户交互界面,一个界面对应着一个Activity。Activity中先要清楚Activity中方法的声命周期,这样就能清楚的知道什么样的代码应该写在什么方法里面。生命周期描述的是一个类,从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法..在这个过程中会针对不同的生命阶段会调用不同的方法。Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。例如,手机上的手机卫士每次进入都要刷新列表操作,这个操作就要放在onStart()方法里面,这样就保证了用户每次看到的数据都是最新的。
  两个Activity中跳转用到哪些方法呢?一般情况比如说有两个activity,分别叫A,B ,当在A里面激活B组件的时候, A 会调用onPause()方法,然后B 调用onCreate() ,onStart(), OnResume() , 这个时候B覆盖了窗体, A会调用onStop()方法.  如果B呢 是个透明的,或者是对话框的样式, 就不会调用onStop()方法。
二、然后就是服务Service。
  咱们也从Service的声明周期开始。在Service的生命周期中,被回调的方法比Activity少一些,只有onCreate, onStart, onDestroy,onBind和onUnbind。通常有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1.通过startService
    Service会经历 onCreate 到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
2. 通过bindService  
    Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind->onDestroyed方法。所谓绑定在一起就共存亡了。调用者也可以通过用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->onDestroyed方法。需要注意的是如果这几个方法交织在一起的话,会出现什么情况呢?一个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的startService又bindService,Service只被创建一次。如果先是bind了,那么start的时候就直接运行Service的onStart方法,如果先是start,那么bind的时候就直接运行onBind方法。如果service运行期间调用了bindService,这时候再调用stopService的话,service是不会调用onDestroy方法的,service就stop不掉了,只能调用UnbindService, service就会被销毁如果一个service通过startService 被start之后,多次调用startService 的话,service会多次调用onStart方法。多次调用stopService的话,service只会调用一次onDestroyed方法。如果一个service通过bindService被start之后,多次调用bindService的话,service只会调用一次onBind方法。多次调用unbindService的话会抛出异常。
  什么时候用Service呢?
Android系统会尽量保持拥有service的进程运行,只要在该service已经被启动(start)或者客户端连接(bindService)到它。当内存不足时,需要保持,拥有service的进程具有较高的优先级。
如果有其他的应用组件作为Service,Activity等运行在相同的进程中,那么将会增加该进程的重要性。
三、还有就是广播BroadcastReceiver
广播接受者BroadcastReceiver是Android系统的核心组件之一,开发人员自定义的广播接受者需要继承自BroadcastReceiver,
BroadcasetReceiver可以使用“动态注册”的方法,实现组件的注册,具体的实现注册方法是:
        1)调用ContextWrapper类定义的registReceiver(BroadcastReceiver receiver,IntentFilter filter)方法注册
        2)自行创建receiver对象
        3)初始化filter对象,并调用filter.addCatergory(Intent.CATEGORY.DEFAULT);并且通过filter.addAction(String action)添加该广播接受者可以接受的广播
四、 最后就是ContentProvider
    ContentProvider把自己的数据通过uri的形式共享出去,android 系统下不同程序数据默认是不能共享访问 需要去实现一个类去继承ContentProvider,屏蔽数据存储的细节,对用户透明,用户只需要关心操作数据的uri就可以了,不同app之间共享,操作数据Sql也有增删改查的方法. 但是contentprovider 还可以去增删改查本地文件. xml文件  的读取,更改,网络数据读取更改。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值