일부 코드를 상속 했으므로 변경할 수 없습니다. :(사용자 정의보기가있는 활동으로 돌아갈 때 무효화가 onDraw를 호출하지 못합니다.
나는 다른 액티비티 (이후부터는 하위 액티비티라고 부름)가 호출되는 주 액티비티를 가지고 있는데,이 중 하나가 완료 될 때마다 finish를 호출하고 주 액티비티로 데이터를 반환한다.
각 활동 (기본 활동 포함)은 상단에 맞춤보기를 표시하는 막대를 가지고 있습니다. 사용자 정의보기에는 네트워크의 상태 (예 : Wi-Fi/모바일)에 따라 그림이있는 캔버스가 포함되어 있습니다. ..
'상태'데이터는 변경되지 않으므로 싱글 톤 내에서 유지되며 뷰는 싱글 톤에서 데이터를 가져 와서 무언가를 정의합니다. 즉, 데이터는 항상 예상대로입니다. .
네트워크가 변경 될 때 MainActivity를 시작할 때 데이터가 변경되고 'invalidate'에 대한 각 호출은 예상대로 'onDraw'에 대한 시스템 호출을받습니다.
각 하위 활동에서 동일한 내용이 다시 적용됩니다.
하위 작업이 끝나고 mainActivity로 돌아 오면 더 이상 무효화를 호출하면 onDraw가 호출되지 않습니다.
나는 이것을 꽤 오래 동안 보았으며, 무엇이 잘못 될지 알 수 없다. 내 생성자에서
내가 가진 :
invalidate();
requestLayout();
지금, 한 가지 더있다 ... 그에서 활동 복귀시 :
setWillNotDraw(false);
데이터는 다음과 같은 방법이라고 변경 될 때마다 즉각적인 포인트, 내가 새로 고치면 이것은 올바르게 그려집니다. 즉 무효화가 onDraw 호출을 트리거합니다. 즉, 전파 된 모든 후속 네트워크 변경은 onDraw 호출을 초래하지 않습니다.
이것이 어떻게 든 분리되는보기와 관련이 있는지 궁금합니다. 나는 'onDetachedFromWindow'가 호출되었음을 알 수있다. 그러나 이것에 대한 방아쇠는 하위 활동의 파괴이므로 MainActivity에 영향을 미치는 이유는 알 수 없다.하지만 생각할 수있는 유일한 방법이다.
난 ... 누군가가 나를 도울 수있는 충분한 정보를 제공 한 희망하고있다
문제에 대해 자세히 설명해 주시겠습니까? 당신의 서브 액티브가 멈추고 있지만 숨어있는 동안 다시 그려야합니까? 또는 기본 활동이 하위 활동에서 복귀 한 후 다시 그려지지 않습니다. 는 보조 Activity에서 반환하면 –
안녕 아르 템은 내 MainActivity는 각 하위 활동은 뷰의 자체 인스턴스를 가지고 있으며,이 보조 Activity에서 무효있어 경우 MainActivity는 다음의 onDraw를 처리하기를 거부 .... 다시 그립니다 중지합니다. – greysqrl
사실, 각보기가 고유 한 인스턴스가 아닌 것 같아요. – greysqrl