切记:此函数只有在focus为true的时候回调一下app的方法,false的时候不会回调。所以不要通过true/false来做区别处理。
一、问题:
最近看到google原声的app中在onWindowFoucusChanged的回调中做资源回收:
代码中在hasWindowFocus的时候要回收listener。结果,显而易见,出现内存泄漏了。
google为什么会犯这么低级的错误?
觉得,可能时app的写的代码,没有及时更新?fw的逻辑变了,app还没有修改,然后google的测试没做压力测试?
好吧,只能这么解释了。
149 @Override
150 public void onWindowFocusChanged(boolean hasWindowFocus) {
151 long startTime = System.currentTimeMillis();
152 if (hasWindowFocus) {
153 Log.d(TAG, "Listening for condition changes");
154 mConditionManager.addListener(this);
155 Log.d(TAG, "conditions refreshed");
156 mConditionManager.refreshAll();
157 } else {
158 Log.d(TAG, "Stopped list