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开发艺术探索》一书案例做的实测,希望能帮助到大家。
本文作者:风之旅人
本文链接:https://www.cnblogs.com/jooy/p/8683167.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee