【Android知识笔记】UI体系(六)

本篇主要记录一些Activity相关的问题,以及以一些Fragment相关问题。

Activity 相关问题

1. 为什么 Activity.finish() 之后 10s 才 onDestroy ?

问题描述: 在 A Activity 启动 B Activity,并结束 A 页面,B 页面在启动时进行大量的动画场景,源源不断的向主线程消息队列发送消息。A Activity 的 onPause 正常执行,但是 onStop 与 onDestory 都延迟了 10s 才执行。为什么会出现这样的情况?

是谁指挥着 onStop/onDestroy 的调用?

  • ActivityonStop/onDestroy 是依赖 IdleHandler 来回调的,正常情况下当主线程空闲时会调用。但是由于新页面Activity持续向主线程消息队列发送消息,导致主线程迟迟无法空闲,onStop/onDestroy 也会迟迟得不到调用。但这并不意味着 Activity 永远得不到回收,系统提供了一个兜底机制,当 onResume 回调 10s 之后,如果仍然没有得到调用,会主动触发。(系统会发送一个10s的延迟消息, 如果 10s 内主线程执行了 Idler 的话,就会移除这个消息

你可能感兴趣的:(Android知识笔记,android,Activity,Activity回调问题,Activity生命周期,Activity参数传递,Activity的启动方式,Fragment生命周期)