IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android程序设计-Activity -> 正文阅读

[移动开发]Android程序设计-Activity

目录

Activity介绍

Context

Intent

startActivityForResult()和onActivityResult()

Activity的生命周期


Activity介绍

??????? Activity是一种应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。本文主要介绍Activity的创建、跳转、数据交互及它的生命周期。

Context

????????Context表示上下文,在 Android Context 分为Application Context Activity ContextService Context三种。

????? Context描述的是一个应用程序环境的信息,通过它可以获取应用程序的资源和类,也包括一些应用级别操作,例如启动Activity、发送广播和接受Intent信息等。

Intent

??????? Intent中文翻译为“意图”,在Android Studio中,它可用于开启新的Activity,也可用于开启 Service服务和发送广播消息。另外Intent可以用于不同组件之间进行数据传递,是Android程序中各个组件进行交互的一种重要方式,其主要分为两种类型。

1)显式Intent:如果Intent中明确包含了要启动的组件的完整类名(包名及类名),那么这个Intent就是显式的,使用显式Intent最典型的情形是在自己的App中启动一个组件,如:

public void onClick(View view) {

??????? Intent subActivityIntent = new Intent(MainActivity.this, SubActivity.class);

??????? startActivity(subActivityIntent);

}

??????? 通过启动按钮组件使活动由MainActivity跳转到SubActivity

?????? 2)隐式Intent:如果Intent没有包含要启动的组件的完整类名,那么这个Intent就是隐式的。虽然隐式的Intent没有指定要启动的组件的类名,但是一般情况下,隐式的Intent都要指定需要执行的action,一般隐式Intent用在想通过自己的App启动另一个App的组件的时候,让另一个App的组件接收并处理该Intent,如:

??????? Intent intent = new Intent(Intent.ACTION_VIEW);

??????? intent.setData(Uri.parse("https://www.baidu.com"));

??????? startActivity(intent);

通过Intent启动本地的浏览器打开百度网页。

startActivityForResult()和onActivityResult()

?????? ?主界面(Activity)通过startActivityForResult()方法跳转至多个不同的子Activity,当子Activity的代码执行完毕后,再次返回主页面,将子activity中得到的数据显示在主界面或将完成的数据交给主Activity处理。而处理这种带数据的意图跳转需要使用到ActivityonActivityResult()方法

??????? 在Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法,可以得到传回的数据,其中requestCode用于与startActivityForResult中的requestCode值进行比较判断,以便确认返回的数据是从哪个Activity返回的;resultCode是由子Activity通过其setResult()方法返回,适用于多个activity都返回数据时,来标识到底是哪一个activity返回的值。Intent对象带有返回的数据可以通过“data.getXxxExtra( );”方法来获取指定数据类型的数据。下面用一段简单的代码来说明Activity的跳转数据处理框架:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {   //根据请求码标识哪个Activity打开
    }
    switch(resultCode) {     //根据结果码标识哪个Activity返回
    }
}

Activity的生命周期

??????? Activity的生命周期即活动从开始到结束所经历的各个状态;换言之,从一个状态到另一个状态的转变,从无到有再到无,这样一个过程中所经历的状态就叫做生命周期。

Activity本质上有四种状态:

1)运行:一个活动被移到了活动栈顶部或前台。

2)暂停:如果一个活动被另一个非全屏的活动所覆盖(比如一个Dialog),那么该活动就失去了焦点,它将会暂停(但它仍然保留所有的状态和成员信息,并且仍然是依附在WindowsManager上),在系统内存极度缺乏时会将其杀死。

3)停止:如果一个活动被另一个全屏活动完全覆盖,那么该活动处于停止状态(状态和成员信息会保留,但是Activity已经不再依附于WindowsManager了),在系统缺乏资源的时候会将它杀死(它会比暂停状态的活动先杀死)。

4)重启:如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。在这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息;与此同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载所保留的信息,以保持原有的状态。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:43:53  更:2021-11-30 15:45:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:06:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码