我为我的按钮设置了监听器:
/*const int m=32,n=40000; //n isnt 40000, change it so that its the size of radioactivedata
int a[n]; // variable to hold each number as it is read from file
int i=0,j=0; //define variables
for ( i=0 ; i<n ; i++ ) a[i]=0;
for ( i=0 ; i<n ; i++ ); rad >> a[i]; //read numbers from rad into array with (>>) operator
unsigned long Num=0;
while(j<n){
i = 0; //reinitialize i and Num
Num = 0;
while ( i<m ){
Num = Num + (a[j])*pow(2.,i);
i++;
j++;
}
cout << j/m << "\t" << Num << endl;
out << j/m << "\t" << Num << endl;
}*/
如果我使用ButterKnife,建议在 View onCreateView(...) {
...
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//some work
}
});
...
}
中致电ButterKnife.unbind(this)
。我是否需要删除侦听器以避免内存泄漏?
onDestroyView(){..}
答案 0 :(得分:5)
这取决于......
您是否有不同的纵向和横向布局,并且您已将其配置为在旋转时仅视图被销毁?
如果是这样,是以阻止在已使用的活动/片段上引用未使用的视图(这可能会阻止它成为GC)
如果旋转视图并且片段/活动被销毁,那么否您不需要这样做,GC将负责处理。< / p>
这种差异的存在是由于Android在其GC上使用Mark-Sweep算法,这将防止收集2个未使用的对象(循环引用)的情况......但是< strong> not 使用过的对象引用未使用的对象的情况。
关于此问题的一些有用的问答: