- 浏览: 122165 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
这种Context拥有和应用程序一样长的生命周期,并且不依赖Activity的生命周期。如果你打算保存一个长时间的对象, 并且其需要一个 Context,记得使用Application对象。你可以通过调用Context.getApplicationContext()或 Activity.getApplication()轻松得到Application对象。
最近遇到一种情况引起了Context泄漏,就是在Activity销毁时,里面有其他线程没有停。
总结一下避免Context泄漏应该注意的问题:
1.使用Application这种Context类型。
2.注意对Context的引用不要超过它本身的生命周期。
3.慎重的使用“static”关键字。
4.Context里如果有线程,一定要在onDestroy()里及时停掉。
最近遇到一种情况引起了Context泄漏,就是在Activity销毁时,里面有其他线程没有停。
总结一下避免Context泄漏应该注意的问题:
1.使用Application这种Context类型。
2.注意对Context的引用不要超过它本身的生命周期。
3.慎重的使用“static”关键字。
4.Context里如果有线程,一定要在onDestroy()里及时停掉。
发表评论
-
stopSelf()与stopSelf(startId)的区别
2016-04-14 14:44 1120startId:表示启动服务的次数 stopSelf(sta ... -
安装/卸载/替换成功广播接收
2016-01-08 11:59 828<receiver android:name=" ... -
ContentProivder
2015-12-09 09:26 498ContentProvider 我们实现了其中的几个方法 ... -
Android获取网络时间
2015-11-19 11:27 11991、实时获取: LocationManager locatio ... -
android animation知识
2015-11-14 11:47 588<?xml version="1.0" ... -
代码中设置android:drawableTop等
2015-11-14 10:42 1037btnAttachment.setCompoundDrawab ... -
自定义View
2015-11-04 15:09 412一般来说,自定义View都会去重写onMeasure()方法, ... -
SimpleOnGestureListener
2015-11-04 12:03 570onScroll()缓慢滑动,手指滑动屏幕的过程中执行; on ... -
设置dialog在底部并宽度全屏显示
2015-11-02 11:53 2303pickerDialog.setContentView(vie ... -
横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
2015-10-29 10:51 1828在之前的版本中都是在Manifest文件中设置Activity ... -
Dialog注意点
2015-10-28 17:14 549dialog:setCancelable与setCancele ... -
清除setBackgroundResource的原有值
2015-10-23 16:50 1192setBackgroundResource(0);清除原有的s ... -
接收隐式意图
2015-10-22 11:29 556想接收隐式意图,必须在他们的意图过滤器中配有:android. ... -
严苛模式
2015-10-14 20:25 1383//启用严苛模式,StrictMode可以用于捕捉发生在应用程 ... -
Android使用Animation完成动画保留最后一帧的办法
2015-09-08 10:43 2472在动画效果的xml中,在set标签中加上一条android:f ... -
控件getHeight和getWidth等于0的解决办法
2015-09-07 17:27 1451//监听layoutContainer是否初始化完成 l ... -
Service和Thread的区别?
2015-08-19 13:25 507servie是系统的组件,它由系统进程托管(servicema ... -
避免内存泄露
2015-08-18 19:21 5071、尽量避免在Activity使用static。 2、能使用A ... -
需要context的时候用activity还是application?
2015-08-17 17:02 786需要context的时候用activity还是applicat ... -
谈谈UI中, Padding和Margin有什么区别?
2015-08-10 17:18 1138Padding 文字对边框, margin是控件与控件之间的距 ...
相关推荐
内存泄露在Android开发中是一个非常重要的问题,因为它可能导致应用程序运行缓慢、消耗过多资源甚至崩溃。Android Studio提供了多种工具帮助开发者检测和解决内存泄露,其中包括Memory Profiler和LeakCanary。 ...
5. 使用Application Context而不是Activity Context,以减少内存泄露的风险。 6. 尽量避免在匿名内部类中直接引用外部类的非静态成员。 在Android开发过程中,掌握以上知识并付诸实践,能够有效避免内存泄露问题,...
1. 静态变量:静态变量生命周期与应用程序一致,如果持有对Context或者其他非静态对象的引用,可能导致内存泄露。 2. 单例模式:单例对象的生命周期很长,若其内部持有Context引用,也会造成内存泄露。 3.匿名内部类...
在Android开发过程中,内存泄露是一个严重的问题,它可能导致应用性能下降、用户界面卡顿甚至应用崩溃。LeakCanary是一款由Square公司开发的强大的内存泄漏检测工具,特别为Android平台设计,可以帮助开发者轻松定位...
在Android中内存泄露很容易出现,而持有很多对象内存占用的Activity更加容易出现内存泄露,开发者需要特别注意这个问题。 本文讲介绍Android中Context,更具体的说是Activity内存泄露的情况,以及如何避免Activity...
内存泄露是指程序在申请内存后,无法释放已申请的内存空间,一次小的内存泄露可能无伤大雅,但随着时间的推移,持续的内存泄露会导致可用内存不断减少,最终可能导致应用卡顿或崩溃。因此,对于Android开发者来说,...
4. **JNI内存管理**:在使用JNI时要特别注意内存的释放,避免在C/C++代码中产生内存泄露。 5. **版本兼容性**:针对不同Android版本可能存在的特性差异,需要进行适配和测试,确保应用在各版本上的稳定性。 6. **...
1. Application 对象的生命周期与整个 App 的生命周期一致,可以用来存放全局变量,但是注意不要引起内存泄露。 2. 系统给应用的 heap 堆内存是动态分配的,不够了会增加,但是有上限,约 24MB。如果长时间低于 30% ...
这可以避免内存泄露,但是需要注意的是,这种方法需要根据实际情况进行选择。 Android WebView 内存泄露的解决方法主要有两种:避免在 XML 中直接写 WebView 控件和手动释放 WebView 的内存。同时,重写 WebView 和...
1. **上下文(Context)的内存泄露**: 在Android中,Activity、Service、BroadcastReceiver等都是Context的子类,它们通常作为参数传递给其他组件。如果一个非静态内部类或者静态变量持有了Context的引用,即使...
如果在一个长时间存活的对象中持有Context的引用,即使该Context所属的Activity或Service已经结束,GC也无法回收这部分内存,导致内存泄露。例如,将Context传递给静态成员或单例模式的类时,需要特别注意及时释放...
内存泄露是指程序中已经不再使用的对象仍然占用内存,没有被及时释放,这可能导致应用程序消耗过多内存,甚至引发系统资源耗尽的问题。Android系统采用垃圾回收(Garbage Collection, GC)机制来自动管理内存,但...
本文将深入探讨如何避免由Context和Handler引起的内存泄漏,通过"AvoidMemoryLeaksDemo"这个示例项目来讲解相关的知识点。 首先,我们要理解Context在Android中的角色。Context是Android系统的核心组件之一,它是...
然而,如果不正确地使用ThreadLocal,可能会导致内存泄露,尤其是在Java EE容器如Tomcat中。本文将深入探讨这个问题,并提供解决方案。 在问题背景部分,我们看到一个示例,其中`LeakingServlet`类内部使用了一个...
- 单例模式或静态成员引用Activity的Context:避免这样做,可以使用Application的Context或使用WeakReference来持有Context。 - 非静态内部类引用外部类:非静态内部类会隐式持有外部类引用,可能导致外部类无法被...
由于Android设备通常配置有限,尤其是内存资源较为紧张,因此开发者需要格外注意避免内存泄漏的发生,以确保应用程序能够高效稳定地运行。 #### 二、Android(Java)中常见的容易引起内存泄漏的不良代码 ##### (一) ...
- 避免在静态变量中保存Context,因为这可能导致Activity泄露。 - 在使用完Cursor后,记得调用close()方法关闭。 - 避免使用匿名内部类,它们隐式持有对外部类的引用,可能导致内存泄漏。 5. 性能优化实践: - ...
//根据图片url给imageView加载图片,自动本地缓存、内存缓存,注意Context需使用ApplicationContext,否则会导致内存泄露,下同 EasyImageLoader.getInstance(context).bindBitmap(imageUrl, imageView