zoukankan      html  css  js  c++  java
  • Android Activity的创建、生命周期

    Activity是Android四大组件之一。一个Activity负责管理一个界面。

    创建一个Activity:

    New -> Activity -> 选择要创建的Activity类型(一般我们选Empty/Basic Activity)

    AS会自动在AndroidManifest.xml文件中注册新建的Activity,不用我们手动注册。

    Activity的生命周期分为5种状态:

    1、启动状态

    启动状态很短,启动后便会进入运行状态。

    2、运行状态

    Activity处于屏幕最前端,可见、有焦点,可与用户交互。

    Android系统会尽可能保持处于运行状态的Activity的运行,如果内存不足,Android会优先销毁栈底的Activity,来保证运行状态的Activity的运行。

    3、暂停状态

    Activity对用户仍然可见,但它无法获取焦点,不会响应用户的操作。

    例如:Activity上覆盖了一个透明的或者非全屏的Activity时,被覆盖的Activity就处于暂停状态。

    4、停止状态

    Activity完全不可见,但任然保留着当前状态和成员信息。

    如果系统内存不足,停止状态的Activity很容易被销毁。

    5、销毁状态

    Activity被清理出内存。

    Activity生命周期对应的方法:

    1、onCreate()    在创建Activity时调用,做一些初始化设置。此方法用得很多。

    2、onStart()    在Activity即将可见时调用

    3、onResume()  在Activity获取焦点、开始可见时调用

    4、onPause()  当Activity被其它Activity覆盖或锁屏时调用

    5、onStop()    当Activity对用户不可见时调用

    6、onDestroy()     在Activity销毁时调用

    7、onStart()    在Activity从停止状态再次启动时调用

    当Activity执行onPause()进入暂停状态,重新回到前台运行时会先调用onResume();

    当Activity执行onStop()进入停止状态不可见,重新回到前台运行时会先调用onRestart();

    停止状态的Activity很容易被销毁,内存不足时,暂停状态的Activity也可能被销毁,如果暂停、停止状态的Activity已被销毁,重新回到前台运行会先调用onCreate()。

    在进行横竖屏切换时,会先销毁Activity,再重建Activity。

    如果不希望横竖屏切换时销毁重建Activity,可以在AndroidManifest.xml的该Activity中通过configChanges属性设置:

    1 <activity
    2             android:name=".Activity2"
    3             android:label="@string/title_activity_2"
    4             android:theme="@style/AppTheme.NoActionBar"
    5             android:configChanges="orientation|keyboardHidden|screenSize">   <!-- 横竖屏切换时不销毁重建此Activity-->
    6 </activity>

    如果希望某个界面一直处于横屏/竖屏状态,不随手机的晃动而改变,可以在AndroidManifest.xml的该Activity中通过 screenOrientation  属性设置:

    1 <activity
    2             android:name=".Activity2"
    3             android:label="@string/title_activity_2"
    4             android:theme="@style/AppTheme.NoActionBar"
    5             android:screenOrientation="portrait">   <!-- 一直处于竖屏状态-->
    6 </activity>

    竖屏是portrait,横屏是landscape。

  • 相关阅读:
    linux下查看jdk路径
    mysql内部级联删除
    Mybatis Mapper.java和Mapper.xml能否分离问题
    The request sent by the client was syntactically incorrect问题解决
    centos下-MariaDB的安装
    对于mariadb安装后可以默认使用无密码登录的问题解决方案
    C#复习笔记(2)--C#1所搭建的核心基础
    C#精粹--协变和逆变
    linux和sqlserver 2017的安装
    C#精粹--闭包陷阱
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/10873261.html
Copyright © 2011-2022 走看看