1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Activity A 启动 Activity B 生命周期

Activity A 启动 Activity B 生命周期

时间:2018-07-26 00:25:35

相关推荐

Activity A 启动 Activity B 生命周期

Activity A启动 B:

A.onPaunse - B.onCreate - B.onStart - B.onResume - A.onstop

-02-26 16:26:34.578 2754-2754/? I/MICO.base: [main] Activity onPause Launcher-02-26 16:26:34.599 2754-2754/? D/MICO.base: [main] Activity onCreate SettingsActivity, , taskId: 17-02-26 16:26:34.643 2754-2754/? D/MICO.base: [main] SettingsActivity onCreate-02-26 16:26:34.650 2754-2754/? I/MICO.base: [main] Activity onStart SettingsActivity-02-26 16:26:34.651 2754-2754/? I/MICO.base: [main] Activity onResume SettingsActivity-02-26 16:26:35.032 2754-2754/? D/MICO.base: [main] Fragment onStop RefrigeratorMainFragment540-02-26 16:26:35.032 2754-2754/? I/MICO.base: [main] Activity onStop Launcher

从B返回A:

B.onPause - A.onRestart - A.onStart - A.onResume - B.onStop - B.onDestory

-02-26 17:22:18.574 2754-2754/? I/MICO.base: [main] Activity onPause SettingsActivity-02-26 17:22:18.596 2754-2754/? I/MICO.base: [main] Activity onRestart Launcher-02-26 17:22:18.602 2754-2754/? D/MICO.base: [main] Fragment onStart RefrigeratorMainFragment540-02-26 17:22:18.603 2754-2754/? I/MICO.base: [main] Activity onStart Launcher-02-26 17:22:18.605 2754-2754/? I/MICO.base: [main] Activity onResume Launcher-02-26 17:22:18.611 2754-2754/? I/MICO.base: [main] Fragment onActivate RefrigeratorMainFragment540-02-26 17:22:18.612 2754-2754/? D/MICO.base: [main] Fragment onResume RefrigeratorMainFragment540-02-26 17:22:18.718 2754-2754/? I/MICO.base: [main] Activity onStop SettingsActivity-02-26 17:22:18.721 2754-2754/? D/MICO.base: [main] Activity onDestroy SettingsActivity -02-26 17:22:18.723 2754-2754/? D/MICO.base: [main] SettingsActivity onDestroy

我们可以在源码里面,可以看到注释已经写的很清楚了,B 创建成功之后,才会调用A的onStop

特殊情况:

如果B 是个透明的,或者是对话框的样式, 就不会调用A 的onStop()方法。因为对用户来说,A 还是可见的。

假如启动模式为SingleTask,OnNewIntent 调用时机

I/MICO.base: [main] Activity onPause SettingsActivityI/MICO.base: [main] Activity onRestart LauncherD/MICO.base: [main] Fragment onStart RefrigeratorMainFragment540I/MICO.base: [main] Activity onStart LauncherD/MICO.base: [main] Activity onNewIntent Launcher, com.Launcher@61faf19I/MICO.base: [main] Activity onResume LauncherI/MICO.base: [main] Fragment onActivate RefrigeratorMainFragment540D/MICO.base: [main] Fragment onResume RefrigeratorMainFragment540I/MICO.base: [main] Activity onStop SettingsActivity

在onResume 之前被调用

可以看系统源码:

android.app.ActivityThread#performResumeActivitypublic ActivityClientRecord performResumeActivity(IBinder token, boolean finalStateRequest,String reason) {try {if (r.pendingIntents != null) {deliverNewIntents(r, r.pendingIntents);r.pendingIntents = null;}if (r.pendingResults != null) {deliverResults(r, r.pendingResults, reason);r.pendingResults = null;}r.activity.performResume(r.startsNotResumed, reason);}

为什么要这样设计? 从源码怎么看?

当一个页面,还没有创建出来,不应该在后台,只是暂停,所以A onPasue 就去创建B. B创建成功后,就调用A.onStop。

参考:

/p/5dcfea447d0f

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。