使用runOnUiThread时发生内存泄漏

时间:2019-05-12 23:16:58

标签: android

我是Android的新手,所以请耐心等待。

根据Android Studio Profiler执行runOnUiThread时出现内存泄漏。该线程用于执行网络操作并在UI中调用方法(记录日志)。这应该是一个非常简单的操作。

我尝试不每分钟盯着一个新线程,而不是使用Looper。但是,我得到的结果与使用runOnUiThread相似,并且仍然出现内存泄漏。

下面是我的代码:

class SendPost extends Thread {

    public void run() {
       if (Looper.myLooper() == null)
            {
              Looper.prepare();
            }
       Handler handler = new Handler();
       ...

       MainActivity.instance.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                MainActivity.instance.actualizeLog();
            }
        });

      handler.postDelayed(this,60000);
      Looper.loop();
    }
}

如何在UI线程中正确调用方法而不产生内存泄漏?还是没有内存泄漏?

编辑1 在UI线程中调用的函数:

    public void actualizeLog() {
        // Called from SendPost thread
        final TextView textLog = findViewById(R.id.textViewLog);
        String serverString;
        serverString = "\t\t" + getServerStatus();
        serverString = getTextLog() + "\t\t" + getCameraStatus() + serverString
                + "\t\t" + getSystemStatus();
        serverString=serverString + "\n" + textLog.getText();
        textLog.setText(serverString);
        setServerStatus("");
        setCameraStatus("NoFoto");
    }

还有instance也在用户界面中

  static MainActivity instance;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      instance = this;
       …..

0 个答案:

没有答案