• Android四大套件Activity


    鉴于之前Android四大套件一起看起来有点乱,分开来述说.相对之前,比较完善一点

    Activity

    • 什么是Activity:Activity和我们所学的Servlet一样,和客户端服务器打交道

                        Activity是一个负责与用户交互的组件,Activity中所有操作都与用户密切相关,可以通过setContentView(View)来显示指定控件。

                        在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。

                        Activity是一种界面系统,只要是界面系统就包含三个组成(控件,布局,事件)

    以下是一个用XMind总结的Activity简介

    • Activity生命周期   
    •       onCreate(Bundle savedInstanceState):

                  创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!

            onStart():

                  activity变为在屏幕上对用户可见时调用。

            onResume():

                  activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。

            onPause():

                  activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!

            onStop():

                  activity被停止并转为不可见阶段及后续的生命周期事件时调用。

            onRestart():

                  重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。

            onDestroy():

                  activity被完全从系统内存中移除时调用,该方法被调用

      • 两个子循环,子生命周期

            第一层(内层)循环是:焦点的生命周期循环,在当前Activity的焦点获得与失去中循环,在这个过程中,Activity是始终可见的

            onPause()->onResume()->onPause()

            第二层(外层)循环是Activity周期循环,是当前Activity在可见和不可见之间循环

            onStart()->onResume()->onResume()->onPause()->onStop()

      • 生命周期划分:整体生命周期:onCreate()->...-onDestory()

                        可视生命周期:onStart()->...->onStop()

                        焦点生命周期:onResume()->onPause()

    • 以下是一个Activity生命周期图

    • Activity生命周期示例代码

          1 onCreat状态   开始启动第一步 重新启动无
             @Override
             protected void onCreat(Bundle savedInstanceState) {
                   super.onCreat(savedInstanceState);
                   setContentView(R.layout.activity_main);
                   initView();

          2 onStart状态   开始启动第二步 重新启动第二步
             @Override
             protected void onStart() {
                   super.onStart();
                   setContentView(R.layout.activity_main);
                   initView();
             }   

          3 onRestart状态   开始启动无 重新启动第一步
             @Override
             protected void onRestart() {
                   super.onRestart();
                   setContentView(R.layout.activity_main);
                   initView();
             }  

          4 onResume状态   开始启动第三步 重新启动第三步
             @Override
             protected void onResumre() {
                   super.onStart();
                   setContentView(R.layout.activity_main);
                   initView();
             }  

          5 onPause状态   暂停第一步 关闭第一步
             @Override
             protected void onPause() {
                   super.onPause();
                   setContentView(R.layout.activity_main);
                   initView();
             } 

          6 onStop状态   暂停第二步 关闭第二步
             @Override
             protected void onStop() {
                   super.onStop();
                   setContentView(R.layout.activity_main);
                   initView();
             }      

          7 onDestory状态   暂停无 关闭第三步
             @Override
             protected void onDestory() {
                   super.onDestory();
                   setContentView(R.layout.activity_main);
                   initView();
             }   

    • 以下是用法,示例的参考

    • Activity常用方法:

           setContentView(int resId):设置Activity显示的布局

           View findViewById(int resId)

           finish():关闭当前的activity

    • Activity在屏幕旋转时的生命周期:   

          不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;

          设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次;

          设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。

    • Activity启动模式: 

          在android里,有4种activity的启动模式,分别为:standard (默认)  singleTop  singleTask  singleInstance

          当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。Activity启动模式的设置在 AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置。   

          1. Standared模式(默认)

              我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的实例,

              退出Activity则会在任务栈中销毁该实例。

          2. SingleTop模式

              这种模式会考虑当前要激活的Activity实例在任务栈中是否正处于栈顶,如果处于栈顶则无需重新创建新的实例,会重用已存在的实例,否则会在任务栈中创建新的实例。

          3. SingleTask模式

              如果任务栈中存在该模式的Activity实例,则把栈中该实例以上的Activity实例全部移除,调用该实例的newInstance()方法重用该Activity,使该实例处於栈顶位置,否则就重新创建一个新的Activity实例。

          4. SingleInstance模式

              当该模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的Activity,都会通过调用实例的 newInstance()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶。此模式一般用于加载较慢 的,比较耗性能且不需要每次都重新创建的Activity。

  • 相关阅读:
    Mapreduce的Job运行流程
    Mapreduce的job提交流程
    Hadoop之hdfs
    Java之垃圾回收机制
    Java中线程死锁问题
    删除数据表重复元素方法
    JAVA
    php篇一 之上传文件
    php篇二 之微信公众号开发
    android + php 后台开发
  • 原文地址:https://www.cnblogs.com/lwxalxy/p/4700447.html
Copyright © 2020-2023  润新知