一.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中的数据变化&通知外界。
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中的数据变化&通知外界。