zoukankan      html  css  js  c++  java
  • android 知识点汇总

    1、activity

    它是 android 应用程序的基本功能单元。一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照。Activity 本身是没有界面的。activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上。每一个activity给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。

    一个应用程序(APK文件)通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就暂停或停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。这些状态转换都是activity的生命周期的部分。

    要理解activity的生命周期,首先需要明白activity的四种状态

    一、Active/Runing (活动的/运行状态)   最直接的表现是:它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

    二、Paused(暂停) 最直接的表现是:它仍然可见,但它已经失去了焦点故不可与用户交互。例如被一个透明样式的 Activity 覆盖的状态或者弹出dialog(对话框)时;此时它依然与窗口管理器保持连接,系统继续维护其内部状态,但是不能与用户交互,不能操作;

    三、Stop(停止) 最直接的表现是: 处于完全不可见的Activity,被另一个Activity完全覆盖,比如从一个activity1跳转到另外一个Activity2,Activity2(可见)处于屏幕的顶端并完全覆盖了activity1

    四、Killed(销毁或结束) : 被系统杀死回收或者没有被启动时处于 Killed 状态。

    知道了activity的四种状态,下面来理解activity的生命周期

    一个应用程序与用户交互(如打开Android新闻客户端,浏览新闻)

    首先展现的是一条一条的新闻列表 其经历:activity的生命周期

    onCreate:在这里创建界面,做一些数据的初始化工作。例如创建指定Activity的布局文件、数据的绑定等;

    onStart: 当Activity处于可见时(即显示在屏幕上)将调用这个函数;

    onRestart:当Activity从停止状态进入活动状态前,将调用这个函数;

    onResume:当Activity获得焦点,也就是说Activity能够与用户交互的时候将调用这个函数,这个时刻Activity位于Activity栈的顶端

    onPause:当Activity进入暂停状态将调用这个函数,但在这个时刻我们一般用来保存持久的数据或者释放占用的资源。

    onStop:当Activity完全被遮时将调用这个函数,

    onDestory:当Activity在被终止前,即将进入非活动状态前,将调用该函数,一般以下两种情况下会调用onDestory函数1、调用Activity的finish方法2、当Android系统资源不足的时候

     下面来自网络

    从下面的日志日志可以看出区别:

    1.从FirstActivity跳到SecondActivity时

    FirstAcvity ---> onCreate
    FirstAcvity --->onStart
    FirstAcvity --->onResume
    FirstAcvity --->onPause
    SecondActivity--->onCreate
    SecondActivity--->onStart
    SecondActivity--->onResume
    FirstAcvity --->onStop

    现在给AndroidMainfest.xml中的SeconedActivity属性加入android:theme="@android:style/Theme.Dialog",则SeconedActivity将以对话框形式出现,不会对FirstAcvity形成遮盖.

      这时的状态输出为:

    FirstAcvity ---> onCreate
    FirstAcvity --->onStart
    FirstAcvity --->onResume
    FirstAcvity --->onPause
    SecondActivity--->onCreate
    SecondActivity--->onStart
    SecondActivity--->onResume

    这时FirstAcvity比完全遮盖时少调用了onStop方法.


    以下两种情况下 都只会触发onPause而不会触发onStop

    1. 一个透明的包含Dialog的Activity 出现

    2. 按poweroff锁屏

    显示一个非activity的Dialog,是不会调用onPause和onStop的,因为此Dialog属于activity

  • 相关阅读:
    Spring AOP (下)
    C#和C++性能差距巨大,在高耗能和低性能设备上强烈建议不要使用
    [MOSS]Microsoft Office SharePoint Server 2007 安装与配置
    [MOSS]使用Microsoft Office SharePoint Server 2007过程中遇到的问题与解决方法
    博客索引
    springweb里面的post和get请求
    Nginx 之在windows下的安装与启动
    某外企招聘程序员部分面试题,求作答!!!
    解决Asp.net Web网站发布到服务器上运行时,某界面传参数过多,造成的“此请求的查询字符串的长度超过配置的 maxQueryStringLength 值”错误。
    使用”Sql Server 代理“下的”作业“定时执行期望的任务
  • 原文地址:https://www.cnblogs.com/umlzhang/p/4482455.html
Copyright © 2011-2022 走看看