美文网首页APP开发实战
APP开发实战122-APP防止内存泄露

APP开发实战122-APP防止内存泄露

作者: xjbclz | 来源:发表于2016-12-15 22:53 被阅读14次

30.3.2防止内存泄露

1 使用Service时,尽量使用IntentService,这样可以避免忘记关闭服务。

2 避免一个对象被比它生命周期长的对象持有或引用,这样会导致该对象无法被释放,内存泄露。

如对一个Activity Context保持长生命周期的引用,即使这个Activity已经被销毁了,但相关内存无法被释放。

对于生命周期长的对象,可以使用ApplicationContext。

非静态内部类的静态实例容易造成内存泄漏,这个静态实例的生命周期超过了类本身:如Activity中的一些特殊Handler等,尽量使用静态类和弱引用来处理。

3 避免代码设计的错误造成内存泄露,如循环引用:A持有B、B持有C、C又持有A。

4 BroadCastReceiver要记得注销处理。

5在Activity的onDestroy方法中调用

handler.removeCallbacksAndMessages(null),取消所有消息的处理,将所有的Callbacks和Messages全部清除掉。

6 在查询SQLite数据库时,会返回一个Cursor,当查询完毕后,及时关闭。

7 I/O流操作完毕,读写结束,记得关闭。

8 线程不再需要继续执行的时候要记得及时关闭。

如在Activity中关联了一个生命周期超过Activity的Thread,在退出Activity时切记结束线程;像HandlerThread的run方法是一个死循环,它不会自己结束,线程的生命周期超过了Activity生命周期,必须手动在Activity的销毁方法中调用thread.getLooper().quit()结束。

相关文章

  • APP开发实战122-APP防止内存泄露

    30.3.2防止内存泄露 1 使用Service时,尽量使用IntentService,这样可以避免忘记关闭服务。...

  • 内存泄露

    内存泄露 实战 实战Go内存泄露 - Go语言实战 - SegmentFault 思否 总结 pprof工具 使用...

  • proguard混淆

    为了防止开发APP的重要code 被泄露,我们往往需要混淆(Obfuscation code ), 也就是把方法,...

  • 引用计数内存管理和 ARC 那点事

    前言 程序员在开发程序的时候,对内存的管理是很重要的一件事情,比如如何高效使用内存,防止内存泄露,降低内存的峰值等...

  • Android RxLifecycle基本使用及原理

    github地址:https://github.com/trello/RxLifecycle 作用:防止内存泄露。...

  • App内存优化

    1.内存优化介绍及工具选择 2.Android内存管理机制 3. 内存抖动解决实战 4. 内存泄露解决实战 hpr...

  • Java防止内存泄露

    启用JMS进行监控采集数据 [https://note.youdao.com/md/?defaultMode=vi...

  • 如何防止内存泄露

    注意集合类:如HashMap、ArrayList等,当他们被声明为静态时,他们的生命时间与应用程序的生命时间是相同...

  • java垃圾回收算法

    垃圾回收机制的意义 垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存;内存泄露:指该内存空间使用完毕后未回收,...

  • Leaks

    Leaks 可以检测app内存泄露情况:

网友评论

    本文标题:APP开发实战122-APP防止内存泄露

    本文链接:https://www.haomeiwen.com/subject/mxogmttx.html