Android线程内存泄漏
Posted
技术标签:
【中文标题】Android线程内存泄漏【英文标题】:Android thread memory Leak 【发布时间】:2017-02-04 08:25:30 【问题描述】:当我从正在运行的服务中获得某个广播消息时,我会写入共享首选项。我想知道这是否会导致内存泄漏? 如果是这样,我该如何解决。我将被要求每 20-25 分钟运行一次此代码。旧线程会死吗?
if(Wifi_Connected)
Thread thread2= new Thread(new Runnable()
@Override
public void run()
SharedPreferences.Editor e = sharedData.edit();
e.putInt("Value",1);
e.commit();
);
thread2.start();
【问题讨论】:
为什么你会认为它会导致内存泄漏?您认为可能会泄漏什么? @JamesKPolk- 我知道线程会导致内存泄漏,这就是我问的原因 我有一个建议给你。完全删除此线程,只需编写代码:sharedData.edit().putInt("Value", 1).apply();
效率会高得多。
【参考方案1】:
不,它可能会导致一些 UI 卡顿。 commit 操作非常快,所以不会持有outer class太久。但是您最好使用在后台线程中执行操作的 apply() 方法。 一般来说,当你持有对像活动这样的“大”对象的引用时,就会出现泄漏,因此它不能被销毁。
【讨论】:
以上是关于Android线程内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章
Android面试Android线程间通信Handler消息机制