안 드 로 이 드 개발 회전 화면 으로 인 한 Activity 재 구축 솔 루 션
4502 단어 안 드 로 이 드 개발Activity재건
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:label="@string/app_name">
방법 2:회전 한 후에 현장 을 회복 하 는 것 은 Activity 가 소 멸 될 것 이 므 로 우 리 는 앞에서 소개 한'지속 화/현장 복원'방법 으로 해결 할 수 있다.즉,onPause()에서 사용자 가 현재 입력 한 내용 을 데이터베이스 나 Preference 에 저장 하고 onCreate()방법 에서 폼 에 읽 고 채 우 는 것 도 공식 적 으로 추천 하 는 방법 입 니 다.보충 이 필요 합 니 다.Activity 재 구축 에 많은 자원 이 필요 하거나 네트워크 에 접근 해 야 하 는 시간 이 오래 걸 리 면 onRetainNonConfigurationInstance()방법 으로 필요 한 데 이 터 를 한 대상 에 저장 할 수 있 습 니 다.아래 와 같이
@Override
public Object onRetainNonConfigurationInstance() {
final MyDataObject data = collectMyLoadedData();
return data;
}
재 구축 시 onCreate()방법 에서 getLast NonConfigurationInstance()방법 으로 이전에 저 장 된 데 이 터 를 얻 을 수 있 습 니 다.다음 과 같은 방법:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MyDataObject data = (MyDataObject) getLastNonConfigurationInstance();
if (data == null) {// Configuration onCreate()
data = loadMyData();
}
...
}
방법 3:회전 을 수 동 으로 처리 하 는 일반적인 상황 에서 Configuration 의 변 화 는 Activity 를 소각 하고 재 구축 할 수 있 지만 지정 한 Configuration 을 변경 할 때 Activity 를 재 구축 하지 않 는 방법 도 있 습 니 다.방법 은 AndroidManifest.xml 에서 android:configChanges 속성 을 통 해 무시 해 야 할 Configuration 이름 을 지정 하 는 것 입 니 다.예 를 들 어 다음 과 같다.
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
이렇게 설정 한 후에 화면 이 회전 할 때 Activity 대상 은 소각 되 지 않 습 니 다.대신 Activity 의 onConfigurationChanged()방법 이 실 행 됩 니 다.여기 서 개발 자 는 현재 화면 방향 을 가 져 와 필요 한 것 을 할 수 있 습 니 다.이 경우 Activity 가 삭제 되 지 않 으 므 로 회전 하면 Activity 에 표 시 된 정보(예 를 들 어 텍스트 상자 에 있 는 텍스트)도 잃 어 버 리 지 않 습 니 다.만약 응용 프로그램 에서 가로 화면 과 세로 화면 이 같은 layot 자원 파일 을 사용한다 면,onConfigurationChanged()에 서 는 아무것도 하지 않 을 수도 있 습 니 다.그러나 가로 화면 과 세로 화면 이 서로 다른 layot 자원 파일 을 사용한다 면,예 를 들 어 가로 화면 은 res/layot-land/main.xml,세로 화면 은 res/layot-port/main.xml 를 사용 하고,onConfigurationChanged()에서 setContentView()방법 을 다시 호출 하여 새로운 layot 가 적 용 될 수 있 도록 해 야 합 니 다.이 때 Activity 대상 은 소각 되 지 않 았 지만,인터페이스의 각종 컨트롤 은 소각 되 어 재 구축 되 었 습 니 다.인터페이스 정 보 를 복구 하기 위해 서 는 추가 코드 를 써 야 합 니 다.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, " ", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, " ", Toast.LENGTH_SHORT).show();
}
}
공식Android 개발 문서에 서 는 Configuration 변경 을 처리 하 는 것 을 권장 하지 않 습 니 다.참고:Using this attribute should be avoided and used only as a last-resort.Please read Handling Runtime Changes for more information about how to properly handle a restart due to a configuration change.회전 화면 을 고려 하 는 것 이 Activity 를 활성화 하 는 것 이 아 닙 니 다.재건 축 을 없 애 는 유일한 요 소 는 앞에서 소개 한 방법 을 추천 합 니 다.onPause()에서 Activity 상 태 를 지속 적 으로 유지 하고 onCreate()에서 현장 을 회복 하면 일거 수 일 투 족 을 할 수 있 습 니 다.Google 은 android:configChanges 속성 을 설정 하 는 방식 을 추천 하지 않 지만,Activity 가 같은 layot 파일 을 가로 세로 로 공유 하면 방법 3 이 가장 편리 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 개발 에 사용 되 는 MT 난수 생 성기이전의 AS3 이식 판 을 약간 고 쳐 서 현재 jkanji 에 사용 하고 있 습 니 다.테스트 를 좀 해 봤 는데 버그 가 별로 없 는 것 같 아 요.가장 간단 한 동전 테스트 를 해 봤 는데 같은 씨앗 의 경우 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.