![](https://img.haomeiwen.com/i2434271/8f5b6606707664d4.png)
搞Android开发的一定知道Context上下文环境,之所以称为“环境”是因为Context只是一个抽象类,其中定义了大量的系统常量,且因为是抽象类,所以具体的功能就交由两个子类来实现。
这里我们需要说明的是ContextThemeWrapper类,ContextThemeWrapper封装了系统主题且派生了Activity,这就是我们在创建一个Dialog或PopupWindows时需要传Activity的原因,因为涉及到界面的东西都会和主题相关,而Application和Service没有界面没主题,所以只能传Activity。
说到Activity也顺便说一个内存泄漏的问题,很多情况下是把Activity作为参数传给某个对象,Activity销毁后持有其引用的对象却没有置空,导致Activity无法被GC回收。所以在开发时要注意:
- 不要用static修饰Activity;因为static变量的存活时间相当于整个应用程序的使用时间。
- 对于Activity的引用建议用软引用,以便于垃圾GC的回收。
另外也可以程序用Application来代替Activity来作为单例引用。
点击链接加入群聊【口袋里的安卓】:https://jq.qq.com/?_wv=1027&k=5z4fzdT
网友评论