Android DevArt1:假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行呢?
问题描述:假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行呢?
废话少说,上代码,Activity A :
public class AActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
}
public void goToBActivity(View view) {
startActivity(new Intent(this, BActivity.class));
}
@Override
protected void onPause() {
super.onPause();
System.out.println("AActivity.onPause");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("AActivity.onStop");
}
}
BActivity:
public class BActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
}
@Override
protected void onStart() {
super.onStart();
System.out.println("BActivity.onStart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("BActivity.onResume");
}
}
Log:
03-31 17:08:56.144 4861-4861/com.art.exploration I/System.out: AActivity.onPause
03-31 17:08:56.187 4861-4861/com.art.exploration I/System.out: BActivity.onStart
03-31 17:08:56.189 4861-4861/com.art.exploration I/System.out: BActivity.onResume
03-31 17:08:56.569 4861-4861/com.art.exploration I/System.out: AActivity.onStop
通过上述测试可以发现,在Android 5.0系统上,旧的AActivity的onPause先调用,然后新的BActivity才会启动。
在Android Activity源码中对onPause的解释里有这样一句话:
When activity B is launched in front of activity A, this callback will
be invoked on A. B will not be created until A's {@link #onPause} returns,
so be sure to not do anything lengthy here.
意思是当活动B在活动A前面启动时,该回调将在A上被调用。在A的onPause返回之前,B不会被创建,所以请确保在这里不做任何事情,及不能做耗时操作,会影响B的启动。
通过分析这个问题,我们知道onPause和onStop都不能做耗时操作,尤其是onPause,也就是说尽量在onStop中操作,从而不影响新的Activity尽快显示出来并切换到前台。
注:这篇博客是笔者根据《Android开发艺术探索》一书案例做的实测,希望能帮助到大家。
Android DevArt1:假设当前Activity为A,如果这时用户打开一个新的Activity B,那么B的onResume和A的onPause哪个先执行呢?的更多相关文章
- Android 创建一个新的Activity
本文转载自:http://www.cnblogs.com/wuyudong/p/5658020.html 新建一个项目,创建一个java类,继承自Activity 新建一个Android.xml文件: ...
- 01_创建一个新的activity&activity配置清单文件
今天开始学四大组件.今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者.四大组件,咱们一天一个.Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面.创建多个 ...
- 启动一个新的activity并携带数据,返回数据给上一个activity
一.在启动一个新的activity的时候可以通过Intent携带数据,通过Intent.putExtra()方法通过键值对的形势装入数据.在新启动的activity中通过 getI ...
- 创建一个新的Activity
1.创建一个类继承Activity类,并创建对应的布局文件,在onCreate方法中加载该布局. 2.在AndroidManifest.xml声明该组件 注:如果想配置一个activity在桌面上有该 ...
- Fragment中启动一个新的Activity
最近遇到一个小问题,就是我在主界面中用的是Fragment,其中四个Fragment,然后打算在其中一个里边,写一个TextView(准确地说是Linearout)的单击事件,然后跳转到另外一个Act ...
- Android课程---Oracle VM VirtualBox出现不能为虚拟机打开一个新任务
因工作需要在Win7下增添了Win7虚拟系统,随着VirtualBox 4.326的版本更新,用户们也开始升级.一用户在升级后发现原来创建的虚拟机无法打开,提示信息为:不能为虚拟电脑win7打开一个新 ...
- Android-管理Activity生命周期 -暂停和恢复一个Activity
在正常的使用app时,前台的activity有时候会被可见的组件阻塞导致activity暂停.比如,当打开一个半透明的activity(就像打开了一个对话框),之前的activity就会暂停.只要ac ...
- [android] 开启新的activity获取他的返回值
应用场景:打开一个新的activity,在这个activity上获取数据,返回给打开它的界面 短信发送时,可以直接选择系统联系人 界面布局是一个线性布局,里面右侧选择联系人在EditText的右上,因 ...
- 缺少新的栈标识:报出异常FLAG_ACTIVITY_NEW_TASK flag-是由于activity关闭之后开启一个新的acitivity时没有标识在栈中,所以需要给一个栈标识
异常(栈里必须有activity的flag标识): 05-02 08:43:36.173: E/AndroidRuntime(3328): android.util.AndroidRuntimeExc ...
随机推荐
- Chapter2:Qt5模板库,工具类及控件
2.1 字符串类 QString类保存16位Unicode值,提供了丰富的操作,查询和转换等函数. (1):QString提供了一个二元的"+"操作符用于组合两个字符串 (2) ...
- HDFS高级功能
HDFS的六大高级特性: 安全模式 安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除.修改等变更请求.在NameNode主节点启动时,HDFS首先进入安全模式 ...
- Windows NAT端口映射
由于有需求进行端口映射,又不想装乱七八糟的软件,Windows本身自带的路由远程访问配置太麻烦,还要两块网卡,坑爹啊. 其实Windows本身命令行支持配置端口映射,条件是已经安装了IPV6,启不启用 ...
- 插头DP模板
/* 插头dp模板 抄的GNAQ 的 括号表示法 */ #include<cstdio> #include<algorithm> #include<cstring> ...
- es6(11)--Proxy,Reflect
//Proxy,Reflect { let obj={ time:'2018-06-25', name:'net', _r:123 }; let monitor = new Proxy(obj,{ / ...
- 零基础学习python_文件(28-30课)
本人小白一枚,随着现在对测试要求越来越高,动不动就要去会一门编程语言,没办法只能学习学习Python,今天看到几个月前还是菜鸟的人突然就已经能使用Python写简单系统了,没办法,虽然之前也简单学习过 ...
- ORACLE 监听配置
安装后最开始如下 # listener.ora Network Configuration File: D:\oracle\app\Administrator\product\11.2.0\dbhom ...
- 5.2_k-means案例分析
k-means案例分析 手写数字数据上K-Means聚类的演示 from sklearn.metrics import silhouette_score from sklearn.cluste ...
- CMD定时倒数
修改if %count%==20 goto finish改变秒数 CMD: mode con: cols=80 lines=25color 4ftitle Please WaitSET /P var= ...
- 45.纯 CSS 创作一个菱形 loader 动画
原文地址:https://segmentfault.com/a/1190000015208027#articleHeader3 感想: 网格布局-> display: grid; HTML co ...