我的应用程序相机预览记录应用程序。我ArrayList在录制相机预览期间使用 , 。
ArrayList在全局变量上声明
private ArrayList<OutputInputPair> pairs = new ArrayList<OutputInput>();
当我记录停止按钮单击时,执行stop()方法
@Override
public void stop() {
pairs.clear();
pairs = null;
stopped = true;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我继续录制而不单击录制停止按钮。发生大量内存泄漏。
所以,我想用WeakReference
我试试这个
//private ArrayList<OutputInputPair> pairs = new ArrayList<OutputInputPair();
private ArrayList<WeakReference<OutputInputPair>> pairs = new ArrayList<WeakReference<OutputInputPair>>(); //global variable
@Override
public void add(OutputInputPair pair) {
//pairs.add(pair);
pairs.add(new WeakReference<OutputInputPair>(pair));
}
@Override
public void stop() {
pairs.clear();
pairs = null;
stopped = true;
}
@Override
public void process() { //record method
//for (OutputInputPair pair …Run Code Online (Sandbox Code Playgroud)