文章目录
一、为什么有这个问题?
在我上一篇文章【Android面试八股文】为什么Dialog不能用Application的Context?
有提到,Dialog
需要一个合法的 Token
,而这个 Token
只有在 Activity
运行时才能获得。使用 Application
的 Context
无法提供这个合法的 Token
,因此会导致 WindowManager$BadTokenException
错误。这就是为什么不能用 Application
的 Context
创建和显示 Dialog
的根本原因。使用 Activity
的 Context
可以确保 Dialog
拥有合法的 Token
和正确的生命周期管理。
那么问题来了,WindowMangerService
中token
到底是什么?token
的存在意义是什么?