Android 시스템 글꼴 크기 및 글꼴 스타일 전환으로 App 소동(충돌 또는 인터페이스 오류)

1533 단어
하나.문제점 발견
문제: 프로그램이 백그라운드에서 탈퇴하고 시스템의 글씨체 대문자를 수정하며 앱을 백그라운드로 복원합니다. 프로그램이 생명주기를 다시 걷는 것을 발견했습니다. 어색하고 소란이 발생했습니다.나는 다른 방식으로 테스트를 했지만 모두 재현할 수 없었다.시스템 글꼴을 수정할 때만 이 이상한 문제가 발생했다.그럼 도모님께 물어볼게요. 이 작가님 감사합니다.https://blog.csdn.net/libo0878/article/details/52883769
내용 발췌: 일부 자료를 찾아보니 앱에 표시된 단위가 sp인 것을 발견했다.시스템 글꼴 크기가 변할 때 sp의 도량 기준이 변합니다. 이 때 시스템은 app에 설정이 바뀌었고 인터페이스를 다시 새로 고쳐야 한다는 알림을 보냅니다.유사한 조작은 가로 세로 화면 전환과 같이 onConfigurationChanged () 방법에서 필요한 조작을 설정합니다.
가로세로 화면 전환, 앱이 걷는 라이프 사이클 방법은 onDestroy(), onCreate()입니다.일반적으로 우리의 응용 프로그램은 가로세로 화면 전환을 피하기 위해 고정된 방향을 설정하는 것이다.configChanges 속성을 구성하여 인터페이스의 제거와 재구축을 방지합니다.
android:screenOrientation="portrait"android:configChanges="orientation|screenSize|keyboardHidden
문제 자체로 돌아가면 문제가 발생하는 원리는 다음과 같다. 시스템의 글씨체 크기가 변했고 앱이 프론트 데스크톱으로 돌아갈 때 알림을 보내서 앱에 알렸다.app 지금 걷는 생명주기 방법은
onDestroy()
onCreate()
onResume()

UI 인터페이스를 새로 고칩니다.
중점: 이 때 앱은 이상하게 걷는 onDestroy () 방법으로 정상적으로 리턴 키를 누르면 실행을 종료하는 onDestroy ()가 아닙니다.이 때 시스템은 자동으로 onSaveInstanceState () 방법에서 이전의 인터페이스 상태나 변수 정보를 임시로 저장합니다.onCreate () 를 사용할 때 버블에서 직접 꺼내서 사용하기 편합니다.그러나 이상한 상태이기 때문에 일부 실체의 정보나fragment 창고의 상태가 회복될 때 착란되어 디스플레이 효과가 잘못되거나 Crash가 나타날 수 있습니다.
둘.해결 방법android:configChanges="orientation|screenSize|keyboardHidden|fontScale
1. fontScale 속성을 추가하여 시스템 글꼴이 변하지 않을 때 다시 인터페이스를 create합니다.만약 이렇게 처리한다면 앱이 백엔드에서 백엔드로 전환될 때 시스템의 글꼴 크기에 따라 글꼴이 달라질 것이다.
2. 앱 안의 글씨체의 단위를 sp에서 dp로 바꾸면 앱의 글씨체 전시는 시스템의 글씨체 변화에 따라 달라지지 않는다.
제품의 수요에 따라 스스로 배치할 수 있다.

좋은 웹페이지 즐겨찾기