- 当Activity处于运行状态时,Android会尽可能地保持这种状态,即使出现内存不足的情况,Android也会先销毁恚底的Activity,来确保当前Activity正常运行。
- 需要注意的是,Activity生命周期的启动状态和销毁状态是过渡状态,Activity不会在这两个状态停留。
方法 | 说明 |
---|---|
onCreate:创建活动 | 此时会把页面布局加载进内存,进入了初始状态。 |
onStart:开启活动 | 此时会把活动页面显示在屏幕上,进入了就绪状态。 |
onResume:恢复活动 | 此时活动页面进入活跃状态,能够与用户正常交互,例如允许响应用户的点击动作、允许用户输入文字等。 |
onPause:暂停活动 | 此时活动页面进入暂停状态(也就是退回就绪状态),无法与用户正常交互。 |
onStop:停止活动 | 此时活动页面将不在屏幕上显示。 |
onDestroy:销毁活动 | 此时回收活动占用的系统资源,把页面从内存中清除掉。 |
onRestart:重启活动 | 处于停止状态的活动,若想重新开启的话,无须经历onCreate的重复创建过程,而是走onRestart的重启过程。 |
onNewIntent:重用 | 已有的活动实例 |
- 如果一个Activity已经启动过,并且存在当前应用的Activity任务栈中,启动模式为singleTask,singleInstance或singleTop(此时已在任务栈顶端),那么在此启动或回到这个Activity的时候,不会创建新的实例,也就是不会执行onCreate方法,而是执行onNewIntent方法。
Activity
需要在Androidmanifest.xml
文件中配置组件<activity></activity>
Androidmanifest.xml
文件中<manifest></manifest>
标签中package属性指定的包名一致。android:name
的属性可以直接设置为.Activity组件名
<activity
android:name=".MainActivity2"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
startActivity()
。Intent
参数是Android应用中各个组件之间通信的桥梁。public void startActivity(Intent intent)
new Intent(this, ActFinishActivity.class)
finish()
public void finish()
public class MainActivity2 extends AppCompatActivity implements
View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
findViewById(R.id.button).setOnClickListener(this);
}
@Override
public void onClick(View view) {
finish();
}
}
Intent
来进行切换元素名称 | 设置方法 | 说明与用途 |
---|---|---|
Component | setComponent | 组件,它指定意图的来源与目标 |
Action | setAction | 动作,它指定意图的动作行为 |
Data | setData | 即Uri,它指定动作要操纵的数据路径 |
Category | addCategory | 类别,它指定意图的操作类别 |
Type | setType | 数据类型,它指定消息的数据类型 |
Extras | putExtras | 扩展信息,它指定装载的包裹信息 |
Flags | setFlags | 标志位,它指定活动的启动标志 |
来源Activity.this
;第二个参数表示待跳转的页面,即目标Activity.class
。Intent intent = new Intent(this, ActNextActivity.class); // 创建一个目标确定的意图
Intent intent = new Intent(); // 创建一个新意图
intent.setClass(this, ActNextActivity.class); // 设置意图要跳转的目标活动
Intent intent = new Intent(); // 创建一个新意图
// 创建包含目标活动在内的组件名称对象
ComponentName component = new ComponentName(this, ActNextActivity.class);
intent.setComponent(component); // 设置意图携带的组件信息
Android
系统会使用IntentFilter
匹配相应的组件,匹配的属性主要包括以下 3个:
AndroidManifest
中配置Action
<activity
android:name=".MainActivity2"
android:exported="true"
>
<intent-filter>
<action android:name="start_activity"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
MainActivity
中开启MainActivity2
Intent intent = new Intent();
intent.setAction("start_activity");
startActivity(intent);
AndroidManifest.xml
文件的Activity标签下的<intent-filter>
中,为被开启的Activity指定catrgory为"android.intent.category.DEFAULT"。必须在AndroidManifest.xml
文件的Activity标签下的<intent-filter>
中,为被开启的Activity指定catrgory为"android.intent.category.DEFAULT"。
Intent 类的系统动作常量名 | 系统动作的常量值 | 说明 |
---|---|---|
ACTION_MAIN | android.intent.action.MAIN | App启动时的入口 |
ACTION_VIEW | android.intent.action.VIEW | 向用户显示数据 |
ACTION_SEND | android.intent.action.SEND | 分享内容 |
ACTION_CALL | android.intent.action.CALL | 直接拨号 |
ACITON_DIAL | android.intent.action.DIAL | 准备拨号 |
ACTION_SENDTO | android.intent.action.SENDTO | 发送短信 |
ACTION_ANSWER | android.intent.action.ANSWER | 接听电话 |
AndroidManifest.xml
里的intent-filter
就是配置文件中的过滤器。像最常见的首页活动MainAcitivity
,它的activity
节点下面便设置了action
和category的过滤条件。其中android.intent.action.MAIN
表示App
的入口动作,而android.intent.category.LAUNCHER
表示在桌面<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<intent-filter>
<action android:name="android.intent.action.EDIT"/>
<action android:name="andrnid.intent.action. VIEW"/>
</intent-filter>
<intent-filter>
标答中间可以罗列多个action
属性,但是当使用隐式Intent
激活组件时,只要Intent
携带的action
与其中一个<intent-filter>
标签中action
的声明相同,action
属性就匹配成功。Activity
添加<intent-filter>
标签时,必须添加action
属性,否则隐式Intent
无法开启该Activity
.<intent-filter>
<data android:mimeType="video/mpeg" android:scheme="http..." />
<data android:mimeType="audio/mpeg" android:scheme="http..." />
</intent-filter>
<intent-filter>
标签中间可以罗列多个data属性,每个data属性可以指定数据的MIME类型和URI。其中,MIME类型可以表示image/ipeg
、video/*
等媒体类型。category
属性用于为action
添加额外信息,一个IntentFilter
可以不声明category
属性,也可以声明多个category
属性,在清单文件中设置category属性的示例代码如下:<intent-filter>
<category android:name="android.intent.category. DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
Intent
中声明的category
必须全部能够与某一个IntentFilter
中的category
匹配才算匹配成功。需要注意的是,IntentFilter
中罗列的category
属性数量必须大于或者等于隐式Intent
携带的category
属性数量时,category
属性才能匹配成功。如果一个隐式Intent
没有设置category
属性,那么他可以通过任何一个IntentFilter(过滤器)
的category
匹配。AndroidManifest.xml
,在指定的activity节点添加属性android:launchMode
,表示本活动以哪个启动模式运行Intent
对象的setFlags
方法,表明后续打开的活动页面采用该启动标志<!--不添加属性的话默认就是标准模式-->
<activity android:name=".JumpFirstActivity" android:launchMode="standard" />
在该模式下,如果栈顶 Activity
为我们要新建的 Activity
(目标Activity),那么就不会重复创建新的Activity
。
应用场景:适合开启渠道多、多应用开启调用的 Activity,通过这种设置可以避免已经创建过的 Activity 被重复创建,多数通过动态设置使用。
singleTop
模式相似,只不过 singleTop
模式是只是针对栈顶的元素,而 singleTask
模式下,如果task
栈内存在目标 Activity
实例,则将 task 内的对应 Activity
实例之上的所有 Activity
弹出栈,并将对应 Activity
置于栈顶,获得焦点。Activity
,我们可以考虑将其设为 singleTask
模式,减少资源耗费singleInstance
,Activity1
和 Activity2
默认(standard
)。Background
的Task,蓝色的代表 Foreground
的Task。返回时会先把 Foreground
的Task 中的 Activity
弹出,直到 Task 销毁,然后才将 Background
的 Task
唤到前台,所以最后将Activity3
销毁之后,会直接退出应用Manifest
中通过launchMode
属性设置的,称为静态设置,动态设置是通过 Java 代码设置的。intent.setFlags();
Intent.FLAG_ACTIVITY_NEW_TASK
Intent.FLAG_ACTIVITY_SINGLE_TOP
Intent.FLAG_ACTIVITY_CLEAR_TOP
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_SINGLE_TOP);
文章浏览阅读2.3k次。本实验需要使用SEED互联网仿真器(已集成到docker配置文件)。启动docker容器,配置文件在/Labsetup/outputs/目录下。由于要配置很多docker容器,所以构建+启动过程会比较漫长。.随着docker启动,仿真器也随之运行,仿真器所用到的设备均为docker容器。..._bgp seed
文章浏览阅读2.1k次。 需求如下:该搜索框是对整个页面的input检索 ,但与弹出层中的input冲突 博主几经辗转 简单处理 解决问题,思路如下:排除掉特定class的input。代码如下:$('input:not(.pop)', this.footer()).on('keyup change', function () { if (that.search() !== th..._input排他选择器
文章浏览阅读5.6k次,点赞6次,收藏20次。看到别人有个1024的勋章,特意留了一篇在今年的10.24日,看看会不会获得。在日常开发中可能涉及接口之间的相互调用,虽然在现在微服务的理念推广下,很多公司都采用轻量级的JSON格式做为序列化的格式,但是不乏有些公司还是有一些XML格式的报文,最近就在对接某个合作方的时候遇到了XML报文。在JSON报文爽快的转换下很难试用一个一个的拿报文参数,还是希望能直接将报文转换成Bean。接下来就了解到..._jaxb 泛型
文章浏览阅读1.2k次。numpy的主要数据对象是多维数组,其中包含相同类型的元素,通常是数字类型,每个元素都有一个索引。使用numpy前通常要导入包。import numpy as np目录类型维度创建运算索引和切片类型numpy的数组被称为ndarray。numpy.array只处理一维数组,而ndarray对象才提供更多功能。a = np.array([[1, 2, 3], [4, 5, 6]])type(a) # <class 'numpy.ndarray'>dtype属性可以获得元素的数_ndarray的位置
文章浏览阅读1.6w次。还在苦于网上找到的一些指令已经不适用了吗?还在苦于有些地方的指令有误吗?还在苦于有些地方整理的指令不够全面吗?那么你来对地方了!小编为大家整理了《我的世界》原版游戏常用的指令,这些基本足以满足各位的基本需求了!大家来一起看看吧!注:表示的是必须输入的部分,[方括号]表示的是可选择性输入的部分基本命令列表命令描述/?/help的替代命令,提供命令使用帮助。/ban + 玩家名字将玩家加入封禁列表。/..._gamemode指令java
文章浏览阅读1.5w次,点赞3次,收藏3次。Spring Boot 结合shiro做第三方登录验证1、首先,说一下我的具体实现思路。在做spring boot拦截器的过程中,开始我准备用spring security来实现,但是研究了一段时间之后发现spring security的集成度太高,需要修改的东西比较多,而且对它本身的使用方法不是很了解,后来转而使用Apache shiro。由于是第三方登录,是不需要我来验证密码的。最开始,我陷入了_shiro 第三方token登录
文章浏览阅读8.7k次。代码错误的原因和调试方法_代码报错
文章浏览阅读5.2k次,点赞9次,收藏40次。---恢复内容开始---1.认识游戏 1.1什么是游戏 1.1.1游戏的定义 任何人类正常生理需求之外的活动均可称为游戏 1.1.2游戏的分类 RPG角色扮演游戏、ACT动作游戏、AVG冒险游戏、FPS第一人称视角射击游戏、TPS第三人称视角射击游戏、FTG格斗游戏、SPT体育游戏、RAC竞速游戏、RTS即时战略游戏、STG..._深度解析java游戏服务器开发
文章浏览阅读4k次。CSRF是什么我就不解释了,百度一搜全是,比波姐的片源还要多,千篇一律都他么是复制粘贴。那为什么这个令牌(token)操作可以防范CSRF呢?下面我就随便说说说错了大家不要介意。首先我们要知道令牌是存储在session里面的,这个很重要 php代码如下<?php namespace app\index\controller; //我直接允许跨域,因为伪装..._tp5 开启csrf令牌
文章浏览阅读1.7k次,点赞2次,收藏6次。市盈率PE市盈率 = 市值/净利润概念解析:买入一家公司,几年回本,年化收益率:净利润/市值(市盈率的倒数)举例:砖头10万买个砖头,每年拍人带来1万利润,需要10年回本市盈率:10/1 = 10年化收益率:1/10 = 10%市净率PB市净率 = 市值/净资产净资产 = 总资产 - 负债举例:张三便利店,净资产:120万市值:1..._净资产收益率和股息率
文章浏览阅读737次。教育部昨举行「102年国立馆所文创商品设计比赛」颁奖典礼,台北科技大学创新设计研究所硕士生谢镇宇,为TW艺术教育馆设计「墨器」杯垫,取「默契」谐音,用5片压克力板,展现水墨画层层渲染效果,增加立体视觉感受,并在杯架后方加入LED光源,获评审肯定夺特优奖和奖金10万元。台南应用科技大学商品设计系学生高郁翔,为国立自然科学博物馆设计「恐龙化石钉书机」,他认为小朋友把钉书机钉下去的那一刻,会觉得像暴龙準_杯垫文创设计说明
文章浏览阅读404次。XML与对象,集合的相互转化 今天小伙伴在群里问了一下关于XML与对象之间的相互转换,作为菜鸟的我正好趁着闲着的时间学习了一波,直接上代码了,有疑问或者有错误的地方还请大家指正,谢谢。。。。 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System...._c# xml转集合