我最近发现我的一个应用程序有一个主要的内存泄漏但似乎无法找到原因,我已经尝试在android studio上检查java堆转储但是不能确切地知道如何找到导致特定活动泄漏的原因(所以任何提示都会很好),而我转换后的.hprof文件由于某种原因在MAT上不兼容..所以我在搜索我的代码并遇到了一个小问题我可能没想过两次想知道这是否会导致内存泄漏:
private static class SetItems extends Handler implements Runnable{
RecyclerView recyclerView;
ListAdapter adapter;
String link;
public SetRelatedVideos(RecyclerView recyclerView, ListAdapter adapter, String link){
this.recyclerView= recyclerView;
this.adapter = adapter;
this.link = link;
}
@Override
public void handleMessage(Message msg) {
try {
ArrayList<item> items = (ArrayList) msg.obj;
adapter.itemsArrayList = items;
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
catch (Exception e){
e.printStackTrace();
}
}
@Override
public void run() {
try {
ArrayList<item> items = getItems();
Message msg = Message.obtain();
msg.obj = items;
sendMessage(msg);
}
catch (Exception e){
e.printStackTrace();
}
}
}
或类似的东西:
file
我一直都知道处理程序在android上应该是静态的,以避免在消息延迟的情况下发生内存泄漏但是#34; main&#34;处理程序在这种情况下静态这可能是内存泄漏的原因吗? 如果问题不是很清楚,请原谅我的英语。