Android 소스 코드를 확인한 결과, 다음과 같은 방법이 있습니다. (core/java/android/view/WindowManagerGlobal.java
)안드로이드는 언제 창문 유출을 고려합니까?
who != null
창 /보기가 유출 된 것 같습니다. 아무도 이것 뒤에 무슨 일이 일어날 지 설명 할 수 있습니까?
"는"인수가 활동 이름을 단
검사 인 나는 소스를 확인
public void closeAll(IBinder token, String who, String what) {
synchronized (mLock) {
int count = mViews.size();
//Log.i("foo", "Closing all windows of " + token);
for (int i = 0; i < count; i++) {
//Log.i("foo", "@ " + i + " token " + mParams[i].token
// + " view " + mRoots[i].getView());
if (token == null || mParams.get(i).token == token) {
ViewRootImpl root = mRoots.get(i);
//Log.i("foo", "Force closing " + root);
if (who != null) {
WindowLeaked leak = new WindowLeaked(
what + " " + who + " has leaked window "
+ root.getView() + " that was originally added here");
leak.setStackTrace(root.getLocation().getStackTrace());
Log.e(TAG, "", leak);
}
removeViewLocked(i, false);
}
}
}
}
멋진 대답! 감사! 'closeAll()'이 세 번 ('handleDestroyActivity'에서 두 번,'cleanUpPendingRemoveWindows'에서 한 번 호출됩니다. 다른 두 가지 경우에 윈도우 누수가 발생할 수 있습니까? – JackWM