zoukankan      html  css  js  c++  java
  • Android之Activity小结

    Acitivity:
    四种状态:活动状态、暂停状态、停止状态、销毁状态
    四种加载模式:standard ,singleTop,singleTask,singleInstance;
    七大方法:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy();

        onCreate():当创建Activity时回调,该方法只调用一次。

        onStart():当Activity被用户可见的时候调用 的方法。

        onResume():恢复Activity时调用,Activity获得焦点时调用的方法,在调用onStart()之后一定要调用该方法

        onPasuse():界面失去焦点时调用的方法

        onStop():界面不可见时调用的方法

        onDestroy():销毁Activity时回调,该方法也只能调用一次。
    Android 中的Activity是以Activity栈的形式来管理Activity的,当前Activity为于栈顶。
    详解:
    四种状态:
    活动状态:当前Activity,用户可见,可以获得焦点。
    暂停状态:用户可见,不能获得焦点。
    停止状态:用户不可见。
    销毁状态:activity结束。


    四种加载模式;
    standard:标准模式 ,默认情况是该模式。
    singleTop:Task栈顶单例模式
    singleTask:Task栈内单例模式
    singleInstance:全局单例模式
    Android对Activity的管理:
    Android采用Task的形式来管理Activity,当用户打开一个Android应用时,Ankdroid会为之创建一个Task
    然后启动这个应用的入口Activity,(注意:一个应用程序是由若干个Activity的组合)入口Activity是
    <intent-filter..../>中配置的MAIN和LANCHER的ACtivity。
    应用程序的Task可以理解成为一个Activity栈(先入后出),先启动的Activity为与栈底,后启动的位于栈顶。
    =====================================//代码如下:===================

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.LZT.sqlitetry"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />
    
    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>
    
    </manifest>

    =======================================================================
    1.默认模式:standard
    当Activity为这么加载模式的时候,每次启动该Activity时会在原Task栈中创建一个新的Activity实例
    2.singleTop:
    该模式与standard模式基本相似,但是有一点不同,如果要启动的Activity位于栈顶的时候,那就不必再创建出
    一个Activity实例了。//可以理解字面意思
    3.singleTask:
    采用这种模式的Activity时,在同一个task中只会有一个该Activity的实例,具体分为下面三种情况:
    *若启动的目标Activity不存在时,则会创建出一个Activity,并加入栈顶。
    **若目标Activity已经存在,且位于栈顶,那么与singleTop行为相同
    ***若目标Activity已经存在但没有位于栈顶,那么系统会将该位于该Activity上的所有Activity移除Task
    使得实例推至栈顶。
    4.singleInstance:
    在整个应用程序中只能有一个Activity实例并且单独的位于一个栈中。

    以上四种加载模式都需要在文件清单中进行配置:属于Activity的一个属性: LaucnchMode="singleTop"||"singleTask"
    ||"singleInstance"
    Activity的另外一个属性:exported="ture"||"false",为true时表明该Activity可以被其他应用程序启动。

     ==============================================================

    名为A的Activity的启动过程:
    onCreate()--->onStart()---->onResume();
    当前名为A的Activity,然后调用BActivity:
    A.onPause()-->B.onCreate()---->B.onStart()---->B.onResume()---->A.onStop();

    (A失去焦点了,B创建了,B创建了界面,B获得了焦点,A失去了界面。指A全部被覆盖,当A没被完全覆盖时不会调用onStop)
    然后回调A的过程:
    B.onPause()--->A.onRestart()--->A.onStart()--->A.onResume()--->B.onStop()--->B.onDestroy();
    可以理解为正在玩游戏,然后有人打电话来了。

    一个Activity销毁时可能的三种状况:
    a:onPause()--->onStop()---onDestroy();
    b:onPause()--->progressKill
    c:onPause()--->onStop()--->progressKill
    CPU可以根据情况直接kill掉一些Activity来节省内存。

  • 相关阅读:
    ThreadLocal分析学习
    探究.NET的bin引用程序集运行机制看.NET程序集部署原理
    ASP.NET网页代码模型分析
    JBPM与设计模式之职责链模式
    根据webform页面大小的变化动态调整控件的大小
    jbpm binding类深入解析
    JBPM与软件架构模式之命令模式
    JBPM对象主键生成机制
    主键思维定势导致的惨案
    电脑安装windows server 2008 导致磁盘分区消失解决方法
  • 原文地址:https://www.cnblogs.com/taotaomajia/p/4475389.html
Copyright © 2011-2022 走看看