【问题标题】:Android thread memory LeakAndroid线程内存泄漏
【发布时间】: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(); 效率会高得多。

标签: android multithreading android-studio android-activity android-memory


【解决方案1】:

不,它可能会导致一些 UI 卡顿。 commit 操作非常快,所以不会持有outer class太久。但是您最好使用在后台线程中执行操作的 apply() 方法。 一般来说,当你持有对像活动这样的“大”对象的引用时,就会出现泄漏,因此它不能被销毁。

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 2014-10-29
    • 2013-12-18
    • 2016-12-09
    • 2020-08-08
    • 2012-02-17
    • 2020-12-08
    • 2018-06-19
    • 1970-01-01
    相关资源
    最近更新 更多