Android_组件_Activity基础

Android_组件_Activity基础,第1张

概述一、概述  Activity是应用组件,提供了用户交互的窗口。一个应用由多个彼此联系的Activity组成。它大多数情况是全屏窗口显示,也可以作为悬浮窗口 或者 多窗口模式。   二、生命周期 下图是来自Android官网,包含了Activity的整个生命周期。 上图 很清晰的显示了Activity的整个生命周期。 onCreate():首次创建Activity时调用,执行所有正常静态设置 -创建

一、概述

 Activity是应用组件,提供了用户交互的窗口。一个应用由多个彼此联系的Activity组成。它大多数情况是全屏窗口显示,也可以作为悬浮窗口 或者 多窗口模式。

 

二、生命周期

下图是来自AndroID官网,包含了Activity的整个生命周期。

上图 很清晰的显示了Activity的整个生命周期。

onCreate():首次创建Activity时调用,执行所有正常静态设置 -创建视图等,接收系统传过来的Bundle 对象(可以包含上个Activity的状态等参数),后面一定时onStart();

onStart(): 在Activity对用户可见之前调用。 如果Activity转为前台,则后续跟onResume(),  转入后台隐藏则调用onStop();

onResume():  Activity对用户可见 并在可交互之前调用。此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。

onPause(): 当系统即将开始继续另一个 Activity 时调用,当前Activity失去焦点。

onStop():在 Activity 对用户不再可见时调用;

onDestory():Activity被销毁前调用。

 

Activity生命周期有3给对应的过程:

1.整个生命周期:从onCreate()到onDestory(),从创建到销毁,从资源申请到释放。

2.可见生命周期:从onStart()到onStop(),这个过程对用户时可见的。在调用这两个方法之间保留向用户显示 Activity 所需的资源。

3.前台生命周期:从onResume()到onPause(),在这段时间,Activity 位于屏幕上的所有其他 Activity 之前,并具有用户输入焦点。

 

任务和返回栈:

任务是指在执行特定功能 *** 作时与用户交互的一系列 Activity。 这些 Activity 按照各自的打开顺序排列在堆栈(即返回栈)中。

eg:可以是同一个应用,如短信中列表,点击进入查看具体的,里面有各种 *** 作;也可以不同应用的Activity,如短信里需要发邮件,则启动调用email的应用

返回栈遵循“后进先出”,当新的Activity被创建后,新的Activity会放到堆栈顶部并获取焦点,之前的Activity会被压入堆栈下一层,但保留用户界面状态。当按返回键时,最上层的Activity会被d出并销毁,下面的Activity重新d出到堆栈顶部并显示。

任务,当用户开始新的任务时,之前的任务转入后台,任务返回栈中的所有Activity处于Stop状态 失去焦点,但返回栈保持不变,等待恢复返回前台。

 

三、常见使用

1.启动:

(1)AndroIDManifest.xml中声明(必须的),Activity最少包含androID:name属性,Activity的名字,包含路径。

<intent-filter>    <action androID:name="androID.intent.action.MAIN" />  ---程序主入口    <category androID:name="androID.intent.category.LAUNCHER" />  ---和上面一起则能在启动器中显示的入口即能看到的图标</intent-filter>

一个程序可以有多个入口和图标。

(2)代码中启动: 

以startActivity(intent)最简单的为例(其他参考API)。

intent构造时有多种参数方式,常见的几个

1.Intent intent = new Intent(MainActivity.this,SecondActivity.class);2.Intent intent = new Intent("xxxaction");3.Intent intent = new Intent();  Componentname com = new Componentname("com.example.pkgname","com.example.testcomponent.MyActivity");  intent.setComponent(com);。。。

 

2.启动模式(简单说明)

Manifest配置,是Activity下的androID:launchMode属性,有4中模式,具体入下。

1.standard: 0

默认模式,未指定的话则是这种模式。 在任务中创建一个新的Activty实例(不管任务中是否存在)。

系统在启动 Activity 的任务中创建 Activity 的新实例并向其传送 Intent。Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例。

但Intent.FLAG_ACTIVITY_NEW_TASK,设置后在历史栈中Activity启动一个新任务。如果Activity的任务已运行,则新的Activity不会被创建,会将那个任务移动到屏幕最上层。

2.singletop:  1

如果当前任务的Activity实例已经在前台存在了(栈顶),则不会被创建,通过调用onNewIntent()传intent。不会调用onCreate().

Activity 可以多次实例化,而每个实例均可属于不同的任务,并且一个任务可以拥有多个实例(但前提是位于返回栈顶部的 Activity 并不是 Activity 的现有实例)。

3.singleTask:  2

如果已存在该Activity实例的任务,则会将该任务放到前台,调用onNewIntent()传intent.

4.singleInstance:  3

只允许一个实例,独占整个任务。创建时 如果存在了,则将他所在的任务调到前台。

类似singleTask,只是它的任务中不包含任何其他Activity.

 

singleTask,下图显示了如何将启动模式为“singleTask”的 Activity 添加到返回栈。 如果 Activity 已经是某个拥有自己的返回栈的后台任务的一部分,则整个返回栈也会上移到当前任务的顶部。 

 

3.Intent过滤器

Activity满足一定条件,系统才会像Activity发送特定intent。

1. *** 作:<action>

如果不包含任何action,则不接受任何Intent.

eg:<action androID:name="com.example.project.TRANSmogRIFY" />

TRANSmogRIFY *** 作,最好包含包名,确保唯一性。

2.数据:<data>

<data androID:scheme="string"
androID:host="string"
androID:port="string"
androID:path="string"
androID:pathPattern="string"
androID:pathPrefix="string"
androID:mimeType="string" />

数据规范检测。引用待 *** 作数据和/或该数据 MIME 类型的 URI(Uri 对象)

3.类别:<category>

一个包含应处理 Intent 组件类型的附加信息的字符串。

eg:<category androID:name="androID.intent.category.LAUNCHER" /> ---前面的,在系统启动器中列表中显示的。

androID.intent.category.broWSABLE  ---允许本身通过网络浏览器启动,如邮件中的链接点击后 则请求包含该类别的应用。

总结

以上是内存溢出为你收集整理的Android_组件_Activity基础全部内容,希望文章能够帮你解决Android_组件_Activity基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存