Android活动泄漏RecyclerView是一种常见的问题,可以通过以下方法解决:
private WeakReference recyclerViewRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerViewRef = new WeakReference<>(recyclerView);
// 其他初始化代码...
}
@Override
protected void onDestroy() {
super.onDestroy();
recyclerViewRef.clear();
}
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
adapter = new MyAdapter();
recyclerView.setAdapter(adapter);
// 其他初始化代码...
}
@Override
protected void onDestroy() {
super.onDestroy();
recyclerView.setAdapter(null);
adapter = null;
}
public class MyAdapter extends RecyclerView.Adapter {
private List data;
public MyAdapter(List data) {
this.data = data;
}
// 其他方法...
public static class ViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
}
通过采用上述方法,可以有效地解决Android活动泄漏RecyclerView的问题。