安卓APP_ 四大基本组件(1)—— Activity

摘自:安卓APP_ 四大基本组件(1)—— Activity
作者:丶PURSUING
发布时间: 2021-04-22 15:56:18
网址:https://blog.csdn.net/weixin_44742824/article/details/116006048

配合菜鸟教程食用效果更佳:4.1.1 Activity初学乍练

一、认识Activity

经过前面的学习,对Activity一定不陌生,今天来系统地认识一下它。

Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方, 一个App允许有多个Activity

二、Activity跳转

点击按钮跳转Activity

在这里插入图片描述

认识清单列表

在这里插入图片描述

手动创建第二个Activity

当然可以自动创建(直接生成java文件和xml文件)
在这里插入图片描述为了更好地了解这个过程,我们选择手动创建一个MainActivity2.java,继承系统的Activity并实现onCreate,添加layout布局。

在这里插入图片描述
组件还必须要在清单文件中注册(认识清单文件中有说明)

创建按钮点击事件跳转Activity

在这里插入图片描述在这里插入图片描述

具体细节代码中呈现

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<!--清单文件-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.myactivity"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyActivity">
<!--        首次启动的是默认的MainActivity--><activity android:name=".MainActivity">
<!--    激活默认的Activity的意图:点击图标直接打开默认的Activity--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--        组件必须在清单文件里面注册--><activity android:name=".MainActivity2"/></application>
</manifest>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

Mainactivity.java

//默认的Activity         继承系统的Activity,成为它的子类
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//跳转到第二个Activity的事件函数public void startActivity2(View view) {startActivity(new Intent(this,MainActivity2.class));}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="352dp"android:layout_height="75dp"android:text="我是MainActivity1"android:textSize="40dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button"android:layout_width="232dp"android:layout_height="79dp"android:layout_marginBottom="196dp"android:text="点我跳转"android:textSize="25sp"android:onClick="startActivity2"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Mainactivity2.java

public class MainActivity2 extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="352dp"android:text="我是MainActivity2"android:textSize="40dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

三、Activity生命周期

简单来说,无论是哪一个应用,每个卡片的状态,存活还是销毁,加载还是未加载,这就是所谓的生命周期。

在上文的基础上,添加生命周期函数,并在每个函数里打印调试信息观察执行状况:

MainActivity.java

//默认的Activity         继承系统的Activity,成为它的子类
public class MainActivity extends AppCompatActivity {private static final String TAG = "zhua";@Override//创建protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.e(TAG, "onCreate:");}@Overrideprotected void onStart() {super.onStart();Log.e(TAG, "onStart: ");}@Overrideprotected void onRestart() {super.onRestart();Log.e(TAG, "onRestart: ");}@Overrideprotected void onResume() {super.onResume();Log.e(TAG, "onResume: " );}@Overrideprotected void onPause() {super.onPause();Log.e(TAG, "onPause: " );}@Overrideprotected void onStop() {super.onStop();Log.e(TAG, "onStop: " );}@Overrideprotected void onDestroy() {super.onDestroy();Log.e(TAG, "onDestroy: ");}//跳转到第二个Activity的事件函数public void startActivity2(View view) {startActivity(new Intent(this,MainActivity2.class));}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

(1)首次运行软件

在这里插入图片描述

界面打开,onCreate先被调用,意味着可以在这里做布局的初始化工作
在这里插入图片描述
onStart():是activity界面被显示出来的时候执行的,用户可见。

onResume():是当该activity与用户能进行交互时被执行,用户可以获得activity的焦点,能够与用户交互。

(2)点击主页面按钮,回到桌面,卡片不可见

在这里插入图片描述

(3)再次打开

在这里插入图片描述

(4)点击按钮跳转到另外一个Activity

在这里插入图片描述

(5)点击返回按钮到桌面,再返回卡片

点击返回按钮返回到桌面使得卡片不可见执行了销毁。

在这里插入图片描述

一张图总结生命周期

(图来自菜鸟教程)
在这里插入图片描述

四、其他三大组件暂不深入了解

Service:服务

当应用不显示时,程序可以挂载在后台执行下载,更新,音乐播放等后台服务。

BroadcastReceiver:广播

BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机,输入法改变等, 发生这些时间,系统都会发送广播,这个叫系统广播。

每个APP都会收到,如果你想让你的应用在接收到 这个广播的时候做一些操作,比如:系统开机后,偷偷后台跑服务,这个时候你只需要为你的应用 注册一个用于监视开机的BroadcastReceiver,当接收到开机广播就启动服务。

当然我们也可以自己发广播,比如:接到服务端推送信息,用户在别处登录,然后应该强制用户下线回到 登陆界面,并提示在别处登录。

ContentProvider:内容提供者

我们想在自己的应用中访问别的应用,或者说一些ContentProvider暴露给我们的一些数据, 比如手机联系人,短信等,我们想对这些数据进行读取或者修改,这就需要用到ContentProvider了。

我们自己的应用,想把自己的一些数据暴露出来,给其他的应用进行读取或操作,我们也可以用 到ContentProvider,另外我们可以选择要暴露的数据,就避免了我们隐私数据的的泄露。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bootdefault和configuration_springboot常用注解、包引入和自动配置功能解读

springboot使用起来确实很方便&#xff0c;做到开箱即用&#xff0c;减少了许多繁琐的配置。不过在使用过程中时常会想&#xff0c;为啥会这样方便&#xff0c;springboot为我们做哪些工作。或者是我们在使用的过程中&#xff0c;会遇到springboot不满足的情况&#xff0c;我们…

radare2 常用操作总结

radare2 简介 radare2是一个用C语言编写的跨平台的二进制分析工具&#xff0c;支持ARM、MIPS、X86等平台&#xff0c;支持分析多种格式的二进制文件如ELF、Mach-O、Fatmach-O, PE、PE、 MZ、 COFF等&#xff0c;同时也支持多种操作系统如Windows (since XP)、GNU/Linux、GNU/D…

Could NOT find SDL_image (missing:SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS)

sudo apt-get install libsdl-image1.2-dev转载于:https://www.cnblogs.com/sea-stream/p/9792496.html

Erlang TCP Socket的接收进程的2种方案

转自&#xff1a;http://blog.csdn.net/summerhust/article/details/8740973 一旦打开了一个使用&#xff34;&#xff23;&#xff30;连接的套接字&#xff0c;它就始终保持打开状态&#xff0c;直至任何一方关闭它或因为一个错误而终止。在建立一个连接时&#xff0c;一般为…

序列化与反序列化(1)Serializable —— Java原生态方法

摘自&#xff1a;序列化与反序列化&#xff08;1&#xff09;Serializable —— Java原生态方法 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-05-08 19:20:21 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/116503261 本文为学习笔记&…

极路由4刷机

准备工作 https://www.right.com.cn/forum/thread-161906-1-1.html https://breed.hackpascal.net/ 在第二个链接里下载路由器对应的breed固件&#xff0c;固件的说明见第一个链接&#xff0c;下文以极路由4为例演示 由于极路由官方挂了&#xff0c;无法进行root&#xff0…

背景颜色及背景图片相关的属性

1.background-color   设置背景颜色&#xff0c;取颜色值   注意&#xff1a;     1.所有元素默认的背景颜色都是透明色&#xff0c;新建窗口的白色不是body的背景色&#xff0c;是浏览器渲染的     2. 背景颜色从边框位置开始绘制     3. 如果元素添加内边距&…

评论安装_评论送|机电安装监理质量控制要点130页

来源&#xff1a;网络整理&#xff0c; 如有侵权请联系删除因本文篇幅有限&#xff0c;只能展示60页&#xff0c;全部130页需要您对本文进行精彩评论或者转发分享&#xff0c;加微信dahe0608送给您本文的ppt原件因本文篇幅有限&#xff0c;只能展示60页&#xff0c;全部130页需…

积跬步-java任职要求

2019独角兽企业重金招聘Python工程师标准>>> 1.JAVA基础扎实&#xff0c;熟悉io、多线程、集合等基础框架&#xff0c;熟悉分布式、缓存、消息、搜索等机制&#xff1b; 2.四年以上使用java进行web开发的经验&#xff0c;熟练使用spring 、MVC等框架&#xff0c;熟悉…

MIPS内联汇编

0X0 近几天使用内联汇编来完成部分功能&#xff0c;下面总结下基础知识点&#xff0c;以便以后查询 语法基本结构 __asm__ __volatile__("汇编语句\n\t""汇编语句\n\t":输出寄存器:输入寄存器:寄存器破坏表);‘:’把内联汇编分割为了4个部分 第一部分 如…

安卓APP_ 控件(11)webView —— 简单应用:显示网页

摘自&#xff1a;安卓APP_ 控件&#xff08;11&#xff09;webView —— 简单应用&#xff1a;显示网页 作者&#xff1a;丶PURSUING 发布时间&#xff1a; 2021-05-11 11:50:52 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/116602469 目录 简单了…

Python 抓取数据存储到Mysql中

# -*- coding: utf-8 -*- import os,sys import requests import bs4 import pymysql#import MySQLdb#连接MYSQL数据库 db pymysql.connect(host127.0.0.1,userroot,passwordmysql,dbtest,port3306,charsetutf8) #db MySQLdb.connect(127.0.0.1,root,mysql,test,coon.set_cha…

ios 去掉底部状态栏_iOS 隐藏状态栏

1.整个项目隐藏状态栏在Targets->General->勾选中Hide status bar2.单个界面隐藏状态栏,例如登录注册页面1.首先在info.plist里面View controller-based status bar appearance 设置为 NO.2.在需要调控状态栏的ViewController类中添加以下代码://进入时隐藏-(void)viewWi…

QT应用开发基础

目录前言Windows上搭建开发环境C基础什么是C什么是面向对象&#xff0c;什么又是面向过程c的灵魂&#xff1a;c的类对象&#xff1a;类的实例化怎么访问类的成员类的函数成员类的访问修饰符函数的重载构造函数和析构函数类的继承虚函数和纯虚函数制作一个简单的QT界面创建工程U…

meson构建系统

简介 Meson是一个构建系统&#xff0c;它被设计成在不牺牲性能的前提下尽可能的友好。这方面的主要工具是用户用来描述构建结构的自定义语言。这种语言的主要设计目标是简单、清晰和简洁。很多灵感都来自于Python编程语言&#xff0c;它被认为是非常易读的&#xff0c;即使对以…

射灯安装方法图解_江苏天筑不锈钢雕塑厂家格栅射灯安装方法,格栅射灯安装注意事项...

格栅射灯安装方法&#xff0c;您是否已经学会了呢&#xff1f;不管您会不会&#xff0c;今天江苏天筑不锈钢雕塑厂家就结合这个问题&#xff0c;一起来为大家详细介绍这部分内容的一些相关的注意事项&#xff0c;南方的天气比较潮湿&#xff0c;所以我们尽量不要把格栅射灯安装…

在centos8 stream启用 Extra Packages

前言 最近把一台机器装了centos8 stream&#xff0c;centos8 的维护周期将会在2021-12-31结束 而centos8 stream和centos8有什么区别呢&#xff1f;我参考官方的描述简单总结下 由下游变更到上游 centos8是RHEL的rebuild版本&#xff0c;所以是处在下游的&#xff0c;意思是收…

ARM体系结构简介 —— 迅为

目录单片机和ARM处理器内存管理单元&#xff08;MMU&#xff09;高速缓冲存储器&#xff08;CACHE&#xff09;指令集ARM的指令系统ARM处理器工作模式ARM处理器的内部寄存器ARM处理器的异常ARM中断向量ARM架构的发展单片机和ARM处理器 内存管理单元&#xff08;MMU&#xff09;…

getElementById() getElementsByName() getElementsByTagName()

http://www.cnblogs.com/winner/archive/2007/03/28/593028.html1、getElementById()getElementById()可以访问DOCUMENT中的某一特定元素&#xff0c;顾名思义&#xff0c;就是通过ID来取得元素&#xff0c;所以只能访问设置了ID的元素。比如说有一个DIV的ID为docid&#xff1a…

网口扫盲二:Mac与Phy组成原理的简单分析(转)

1. general 下图是网口结构简图.网口由CPU、MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中. 对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列三种方案: CPU集成MAC与PHY;CPU集成MAC,PHY采用…