Activity总结

作者: bogerLiu | 来源:发表于2017-07-17 14:47 被阅读42次

    activity声明周期

    oncreate->onStart->(onReStart)->onResume->onPause->onStop->onDestory()```
    >   onstart 开始activity已经在前台,但是还是不可见,onResume表示已经开始可见状态(对应着可见进程)
    onPause() 对应着后台进程
    
      #activity 加载模式  
      - standard  默认的加载模式:
    > 每当startActivity  直接往栈顶添加新的activity  声明周期显示之前的AonPause然后是新的`activity` onCreate->onStart->onResume->旧的`activity`onStop
    
      - singleTop 
    > 栈顶单一加载模式   当activity A设置成该模式后,  A位于栈顶后,如果在启动新的A,A的生命周期onPause->onNewIntent->onResume
    如果A不在栈顶,那么就和standard模式一样
                
    - singleTask  
    > 如果位于栈顶 则onPause->onIntent->onResume 如果位于栈底,则吧上面所有的activity都pop出战,自己则是调用onNewIntent -onRestart->onStart->onResume(自己被唤起)
    
    
    - singleInstance  会打开一个新的task并把该activity放进去
    
    
     # activity异常关闭恢复 
    `activity`会把当前页面中所有拥有`id`的`view`的状态保存起来,但是activity中开发者声明的变量并不会保存,用户可以在`onSaveInstance`方法中保存必要的参数,`activity`重建后会在`onCreate(Bundle savedInstanceState)`的`savedInstanceState`中存放,但是这个并不推荐,因为第一次启动activity的savedInstanceState是null,官方推荐在`onRestoreInstanceState(Bundle savedInstanceState) `方法中恢复数据
    
    #activity隐式启动(应用内,网页端)
    
    - 应用内隐式启动Activity:A
    对于A的要求 在manifest文件中 A要声明`category`和`action` 这个是必须的,然后在intnent启动时需标明action,**默认的category可以不标明**,`intent`会自动添加,对于action匹配规则,action 可以声明多个,但是必须要有一个可以匹配成功,category则一但在manifest文件中声明,则必须一一对应(这么记,维生素c,所以category要一一对应)
    对于intent隐式启动,安全起见,需要先验证一下这个intent是否能找到`intent.resolveActivity(getPackageManager());`只有不为`null`那么可以安全启动
    
    网页内启动(Scheme规则)
    在manifest文件中声明
    

    <data
    android:host=""
    android:mimeType=""
    android:path=""
    android:scheme=""
    android:pathPattern=""
    android:pathPrefix=""
    android:port=""
    android:ssp=""
    android:sspPattern=""
    android:sspPrefix=""/>

     > 一般只需要设置scheme和host即可  scheme  就是http这种,host就是www.google.com
    
    
    ##总结
    个人感觉activity基础知识就这么多,如果有不足 欢迎指出

    相关文章

      网友评论

        本文标题:Activity总结

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