我是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;
…..