Handler의removeCallbacksAndMessages(null)를 호출해서Handler의 메시지를 비울지 여부;
아직 완료되지 않은 요청을 취소했는지 여부;
페이지에 등록된 감청, 반등록 여부;
만약에 자신이 관찰자 모드를 사용한다면 반등록 여부;
RxJava를 사용했다면 구독 해지 여부;
데이터베이스의 커서가 이미 닫혔는지 일반인들은 모두 알고 있다. 문제는 다중 라인이 병발할 때를 고려하지 않은 상황에서Cursor가 풀리지 않았다는 데 있다.따라서 데이터베이스 작업에는 다음과 같은 상세 코드 블록 동기화가 필요합니다.http://www.2cto.com/kf/201408/329574.html
열린 파일 흐름이 닫혔는지 여부
안드로이드 3.0 이하의 버전은 사용된 비트맵이 Recycle () 를 호출할지 여부입니다. 그렇지 않으면 메모리를 계속 차지할 것입니다. 안드로이드 3.0 이상 버전은 Recycle () 를 호출할 필요가 없습니다. 이 버전의 비트맵은 모두 가상 기기의 메모리에 넣고 GC가 자발적으로 회수할 수 있기 때문입니다.
WebView에서 destory () 함수를 호출했는지 여부
내부 클래스, 예를 들어Handler,Listener,Callback이 staticclass가 되는지 여부는 비정상적인 내부 클래스가 외부 클래스의 인용을 가지고 있기 때문이다.
만약에 서브루틴이Activity를 가지고 있다면 리퀘스트 같은Activity를 약인용으로 가지려면 약인용 형식으로 메모리 유출을 방지해야 한다.
Activity를 매개 변수로 가져오는 함수를 요구하고 getapplicationContext () 를 매개 변수로 바꿀 수 있는지 여부
Handler 관련
View를 사용합니다.post () 에 문제가 있는지 여부입니다. 왜냐하면View가detached 상태에 있는 동안post () 안의 Runnable가 실행되지 않기 때문입니다.이 View가 attached 상태인 경우에만 실행됩니다.
Runnable을 바꾸려면 매번 실행될 것입니다.handler를 사용해야 합니다.post로 대체
만약에 프로그램이 같은handler에서 같은Runnable를 여러 번 포즈할 수 있다면 매번post하기 전에 이handler에서 실행되지 않은 이Runnable를 비워야 한다. 예를 들어
메모리에 저장된 그림, 압축 처리를 해서 메모리에 저장했는지 여부. 그렇지 않으면 그림의 질이 너무 높아서 OOM
이 발생할 수 있다.
Intent가 너무 많은 데이터를 전달하면 페이지가 너무 느리게 이동할 수 있습니다.너무 큰 데이터는 영구적인 형식으로 전달할 수 있다. 예를 들어 읽기 및 쓰기 파일
같은 파일을 빈번하게 조작하거나 같은 데이터베이스 조작을 실행하는데 정적 변수나 국부 변수의 형식으로 메모리에 저장하는 것을 고려하시겠습니까?공간으로 시간 바꾸기
메인 페이지에 놓인 컨트롤을 ViewStub로 시작 속도를 최적화할 수 있는지 여부
제3자 가방 조심해야 돼요.
build.gradle 원격으로 제3자 가방에 의존할 때 버전 번호는 죽도록 쓰고 + 번호를 사용하지 마십시오. 새 버전의 제3자 가방에 새로운 문제가 도입되지 않도록 하십시오
제3자 프로젝트를 가져올 때 인코딩을 자신의 프로젝트로 바꾸는 것을 기억하세요
제3자의 가방이나 JDK 방법을 호출할 때 그들의 원본 코드에 뛰어들어try-catch를 넣을지 말지를 보아야 한다. 그렇지 않으면 자신의 응용 프로그램이 붕괴될 수 있다
제3자 패키지를 사용할 때 그 혼동 규칙을 추가했는지 여부와 제3자 패키지의 혼동 규칙을 빠뜨리면 제3자 패키지가 혼동하지 말아야 하는 코드가 혼동될 수 있다.Debug 버전에서는 문제가 발견되지 않았지만 Release 버전에서는 문제가 발생
시스템이 so를 추가할 때 펌웨어에 대응하는 안드로이드가 있는지 여부.mk 파일에 새로 추가된 so를 추가합니다. 그렇지 않으면 시스템이 @lib/armeabi/libcommon을 컴파일하지 못할 수도 있습니다.so @lib/armeabi/libabcdefg.so\
쌍으로 나타나야 하는 곳에 주의하시오
시스템의, 자기가 쓴 것, 등록과 반등록 방법, 쌍으로 나타날지 여부
생명주기의 리셋에서 생성되고 삭제된 코드가 대응하는지 여부: onCreate () 에서 Adapter를 만들었는지 여부. 그러면 Adapter의 종료 처리 작업 (예를 들어 Image 캐시를 비우는 것) 은 일반적으로 onDestory () 에 써야 하고 onDestoryView () 에 쓸 수 없다.
유사한 생명주기에 대응하는 코드는 onStart(), onStop()이다.onCreate()、onDestory(); onResume()、onPause(); onCreateView()、onDestoryView()
ListView의item을 복용하면 Item에서View의 조작이 쌍으로 나타나는지 여부, 예를 들어View의 조작은 모두 쌍으로 나타나는지 여부.그렇지 않으면 ListView에서 Item 재사용으로 인해 Item 표시 착란 문제가 발생할 수 있음
기타
어떤 상황에서 어떤 변수가 비어 있는지 많이 생각하고 함수 체내에서 파라미터를 처리하기 전에 반드시 판공문
을 넣어야 한다.
리셋 함수가 리셋 함수를 잘 처리하는지 여부는 문제가 생기기 쉽다.예를 들어 네트워크 요청의 리셋은 이때의 Aciivity 등이 아직 존재하는지 판단하고 다시 호출해야 한다.비동기식 작업으로 인해 Activity가 사라질 수 있습니다.그리고 회수될 수 있는 변수에 대한 공판도 해야 한다.
데이터베이스를 수정한 후 데이터베이스의 버전 번호를 +1
제3자의Activity를 시작할 때 이 Intent가 해석될 수 있는지 여부
Intent sendIntent = new Intent(mContext, Demo.class);//이런 방식으로if(sendIntent.resolveActivity(getPackage Manager())가 존재하는지 판단합니다!null) { startActivity(sendIntent);} Activity가 존재하지 않으면 ActivityNotFoundException 예외가 발생합니다
Activity, Service 또는 Provider에 새로 등록된 AndroidManifest.xml에서 exported 속성은true입니다. 보안 문제를 일으킬 수 있는지 고려해야 합니다. exported 속성이true일 때 외부 응용 프로그램에서 이Activity를 직접 호출할 수 있기 때문입니다.발생할 수 있는 문제: 1) 외부 응용 프로그램이 상세 정보 페이지를 직접 시작하여 일부 검증 페이지를 직접 돌려보낼 경우 2) 외부 응용 프로그램이 이 Activity에 엉망진창인 Intent를 전달하면 이 응용 프로그램이 붕괴될 수 있습니다.즉 안드로이드의 서비스 거부 빈틈
Activity의 onCreate에서 Popup Window의 show AsLoaction 방법을 사용하지 마십시오.Activity가 아직 불러오지 않았기 때문에 오류가 발생
자체 측정 시 체크포인트
어떤 상황에서 어떤 변수가 빈 지침 문제를 일으킬 수 있는지 생각하라
핸드폰을 가로로 하고 Bug이 있는지 확인
해상도가 다른 모델에서 레이아웃에 버그가 있는지 확인
영문 등 외국어 글꼴로 전환하여 외국어가 완전하게 표시되는지 확인
저버전에서 업그레이드하면 문제가 없을까요? 예를 들어 데이터베이스가 호환되지 않는 문제가 발생할 수 있습니다
Home 키를 누른 상태에서 정상
화면을 끄고 켜시겠습니까
다른 응용 프로그램으로 전환하고 다시 전환하면 어떻게 됩니까
휴대전화의 개발자 옵션 중'GPU 과도화 디버깅','GPU 구현 모드 분석'과'FPS와 소모량 표시'기능을 이용하여 자신의 새로운 기능이 과도하게 그려질지, 프레임이 떨어질지 확인
부팅 속도에 영향을 미치는지 테스트adb shell am start - W 패키지 이름/Activity
APK 크기가 커졌는지 비교
Monkey 달리기, 안정성 테스트
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: