Android四大组件生命周期

一.Activity生命周期


1.生命周期调用方法


onCreate():创建视图,传递一个保留此Activity上一状态的Bundle的参数。


onStart():在此Activity显示在前台前调用。


onResume():Activity可见,获得焦点与用户交互。


onPause():启动其他Activity时调用,通常用于保存数据,释放资源。


onStop():当Activity不可见时调用,时刻是在Activity需要销毁或者被其他Activity取代显示。


onDestory():Activity调用finish()h后,销毁Activity实例。




2.Activity的4种状态


<1>活动状态(Active)处于栈顶,可见有焦点。


<2>暂停状态(Pause)可见无焦点,透明或非旋屏view覆盖其上。


<3>停止状态(Stoped)不可见。


<4>非活动状态(Inactive)Activity被杀或者还未启动。




3.Activity的启动模式


<1>standard:默认模式,产生新的实例压入task栈。


<2>singleTop:如果Activity已位于栈顶就不创建,否则新建实例压入栈,“拒绝重叠”。


<3>singleTask:同一个Task内只允许有一个Activity实例,如果栈内没有activity实例则新建压入,否则系统将其上所用Activity移除,调用onIntent()新建一个实例。


<4>singleInstance:若目标Activity不存在,先创建一个全新的Task,将之压入栈顶。如果已经存在,将activity所在的栈移到前台显示出来。




二.Service


1.生命周期调用方法


onCreate()->onStart()/onBind()->onDestory() 只有onstart方法可能被多次调用。


onStart()方法开启的Service与调用者没有直接的方法进行通讯,调用者死亡仍然运行。


onBind()方法开启的Service与调用者可以通过ServiceConnection建立连接进行通讯,调用者死亡则Service死亡。






三.BrodcastReceiver


生命周期只有十秒左右,如果在onReceiver()做超过10秒的事就会ANR,一个BrodcastReceiver对象只有在被调用onReceiver()才是有效的,返回后结束生命周期。


流程:BrodcastReceiver通过Binder机制向AMS(Activity Manager Service)进行注册,广播发送者通过Binder向AMS发送广播,AMS查找符合条件的BrodcastReceiver,


加入相应的消息循环队列,消息循环拿到此广播,回调BrodcastReceiver中的onReceiver();


注册类型:


静态:app退出也可工作   动态注册:与宿主生命周期相关。


广播类型:

普通广播,系统广播,有序广播(根据priority属性值接收广播,priority值大的BrodcastReceiver可以中断或修改广播)




四.ContentProvider


底层采用Android中的Binder机制


<1>统一资源标识符(URI)自定义URI = content://授权信息/表名/记录


<2>核心方法insert,delete,update,query


<3>ContentResolver类
   
   统一管理不同BrodcastReceiver之间的操作,提供了与BrodcastReceiver同名&作用的4个方法。


<4>UriMatcher类


   步骤1:UriMatcher matcher = new UriMatcher(UriMatcher.NO.MATCHER);
   步骤2: int uri_code_a = 1;
           matcher.addURI(授权信息,表名,uri_code_a); 


<5>ContentObserver


观察uri引起的contentProvider中的数据变化&通知外界。





























































你可能感兴趣的:(Android四大组件生命周期)