美文网首页
Android基础

Android基础

作者: felicia_coder | 来源:发表于2017-09-21 11:01 被阅读14次

    android系统(四层架构)~

    1. linux内核:提供了底层驱动
    2. 系统运行库层:提供了特性支持和允许编写android应用的核心库
    3. 应用框架层:各种API
    4. 应用层
     SDK:开发工具包(一堆API)。
     四大组件:Activity,Service,Broadcast Receiver,Content Provider。
     AndroidManifest.xml:配置文件;四大组件在这注册;添加权限声明等。
    

     Log.v():用于打印琐碎的,意义小的日志信息,级别verbose(最低)~灰色
     Log.d():用于打印调试信息,级别debug(比verbose高点)~绿色
     Log.i():用于打印重要数据,帮助分析用户行为,级别info(比debug高点)~蓝色
     Log.w():用于打印警告信息,级别warn(比info高点)~紫色
     Log.e():用于打印错误信息,级别error(比warn高点)~红色
     assert:~黑色
    

    android第一行代码 Activity

    Activity生命周期
    活动在其生命周期中最多可能会有4种状态:
    1. 运行状态
    2. 暂停状态
    3. 停止状态
    4. 销毁状态
    七种回调方法:
    1. onCreate():第一次被创建的时候调用,应在这中完成初始化操作,比如加载布局、绑定事件等
    2. onStart():在不可见->可见时调用
    3. onResume():在活动准备好和用户进行交互的时候调用。
    4. onPause():在系统准备去启动或恢复另一个活动时调用,应在这将消耗cpu的资源释放掉和保存关键数据,但这个方法一定要快,不然会影响新栈顶活动的使用
    5. onStop():在活动完全不可见时调用,和onPause()主要区别在于如果新活动是对话框式的活动,则onPause()会执行而onStop()不会执行
    6. onDestroy():在销毁前调用,之后活动将变为销毁状态
    7. onRestart():在停止->运行状态之前调用

    除onRestart()之外都是两两相对的,因此又分为三种生存期

    1. 完整生存期:onCreate()—onDestroy()
    2. 可见生存期:onStart()—onStop()
    3. 前台生存期:onResume()—onPause()
    异常情况的生命周期

    情况一:资源相关的系统配置发生改变导致Activity被杀死并重新创建
    情况二:资源内存不足导致低优先级的Activity被杀死

    1. 除非程序在onCreate()方法里面就调用了finish()方法,系统通常是在执行了onPause()与onStop() 之后再调用onDestroy() 。
    2. onSaveInstanceState缓存数据和onRestoreInstanceState恢复数据。
      • 把Activity销毁时onSavedInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法,onRestoreInstanceState是在onStart之后调用。
      • Activity被意外终止时,会调用onSavedInstanceState去保存数据,然后Activity会委托Window去保存数据,接着Window再委托它上面的顶级容器去保存数据,顶层容器是一个ViewGroup或者DecorView.最后顶层容器再去一一通知它的子元素来保存数据,这样整个数据保存过程就完成了,可以发现,这是一种典型的委托思想,上层委托下层,父容器委托子容器去处理一些事情。
    3. 当从Activity a跳转到Activity b时,a的onPause方法执行过后,b的onResume方法才会执行。
    活动的启动模式:

    可以在AndroidManifext.xml注册Activity时设置启动模式
    android:launchMode="singleTask"

    1. standard:(默认)
      每启动一次就会创建该活动的一个新的实例入栈,而不在乎是否栈中已存在
    2. singleTop
      在启动活动时返回栈的栈顶已经是该活动,则直接使用,不会再创建新的实例;要是该活动未处于栈顶位置,则创建新实例
    3. singleTask
      每次启动活动时系统会在栈中检查是否存在该活动的实例,若已经存在,这直接使用该实例,在此之上的活动统统出栈
    4. singleInstance
      有另一个返回栈一起管理,便于不同的应用程序访问,
      FristActivity -> SecondActivity(进入另一个返回栈里) -> ThirdActivity
      退出时ThirdActivity ->FristActivity -> SecondActivity,先查看当前活动栈栈顶退出后还有没有活动实例,若有接着出栈,之后再访问另一个栈。

    android Framework既能在同一个任务中对Activity进行调度,也能以Task为单位进行整体调度。在启动模式为standard或singleTop时,一般是在同一个任务中对Activity进行调度,而在启动模式为singleTask或singleInstance是,一般会对Task进行整体调度。

    对Task进行整体调度包括以下操作:

    • 按Home键,将之前的任务切换到后台
    • 长按Home键,会显示出最近执行过的任务列表
    • 在Launcher或HomeScreen点击app图标,开启一个新任务,或者是将已有的任务调度到前台
    • 启动singleTask模式的Activity时。
    • 启动singleInstance的Activity时,会在系统中搜寻是否已经存在一个这个Activity的实例,如果存在,会将这个实例所在的任务调度到前台,重用这个Activity的实例(该任务中只有这一个Activity),如果不存在,会开启一个新任务,并在这个新任务中启动这个singleInstance模式的Activity的一个实例。

    应用场景:
    1.singleTop适合接收通知启动的内容显示页面。例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。聊天的对话窗口,

    2.singleTask适合作为程序入口点。例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。之前打开过的页面,打开之前的页面就ok,不再新建。
    singleTask:a界面购物,b界面确认订单,c界面付款,如果付款成功会跳到a,如果不付款则返回b,这时候重启a就会用到singleTask.

    3.singleInstance适合需要与程序分离开的页面。例如闹铃提醒,将闹铃提醒与闹铃设置分离。singleInstance不要用于中间页面,如果用于中间页面,跳转会有问题,比如:A -> B (singleInstance) -> C,完全退出后,在此启动,首先打开的是B。

    4.standard 标准的启动模式,也是默认的启动模式。

    Activity的构成

    Activity -> PhoneWindow (window实现类) -> DecorView(顶级视图) 从系统布局中加载,并在运行时将开发人员给Activity的布局添加到系统布局的mContentParent -> Default Layout(默认布局) -> ViewGroup:mContentParent -> xml布局

    android第一行代码 Fragment

    1. 运行状态
    2. 暂停状态
    3. 停止状态
      当活动进入停止状态时,与它相关联的碎片就会进入停止状态。或者调用FragmentTransaction的remove(),replace()移除碎片,但有事务提交之前调用addToBackStack()方法,这时碎片也会进入停止状态。
    4. 销毁状态
      当活动销毁时,碎片也会销毁,或者调用FragmentTransaction的remove(),replace()移除碎片,但有事务提交之前没有调用addToBackStack()方法,这时碎片也会进入销毁状态。
      活动的回调方法,碎片几乎都有,不过碎片还提供了一些附加的回调方法。
    Fragment生命周期

    相关文章

      网友评论

          本文标题:Android基础

          本文链接:https://www.haomeiwen.com/subject/kgamlxtx.html