질문 : 회전 Android에서 활동 다시 시작
내 Android 애플리케이션에서 장치를 회전하면 (키보드를 밀어 내면) 내 Activity
이 다시 시작됩니다 ( onCreate
가 호출 됨). 이제 이것은 아마도 예상되는 방식이지만 onCreate
메서드에서 많은 초기 설정을 수행하므로 다음 중 하나가 필요합니다.
답변
애플리케이션 클래스 사용
초기화에서 수행하는 작업에 따라 Application
을 확장하는 새 클래스를 만들고 해당 클래스 내에서 onCreate
메서드로 초기화 코드를 이동하는 것을 고려할 수 있습니다.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
// TODO Put your application initialization code here.
}
}
애플리케이션 클래스의 onCreate
는 전체 애플리케이션이 생성 될 때만 호출되므로 방향에서 액티비티가 다시 시작되거나 키보드 가시성 변경으로 인해 트리거되지 않습니다.
이 클래스의 인스턴스를 싱글 톤으로 노출하고 getter 및 setter를 사용하여 초기화중인 애플리케이션 변수를 노출하는 것이 좋습니다.
참고 : 등록 및 사용하려면 매니페스트에서 새 애플리케이션 클래스의 이름을 지정해야합니다.
<application
android:name="com.you.yourapp.MyApplicationClass"
구성 변경에 대한 반응 [업데이트 : API 13부터 사용되지 않습니다. 권장 대안보기 ]
또 다른 대안으로 방향 및 키보드 가시성 변경과 같은 재시작을 유발하는 이벤트를 애플리케이션에서 수신하고 활동 내에서 처리하도록 할 수 있습니다.
활동의 매니페스트 노드에 android:configChanges
노드를 추가하여 시작합니다.
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
또는 Android 3.2 (API 레벨 13) 이상 :
<activity android:name=".MyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
그런 다음 Activity 내에서 onConfigurationChanged
메서드를 setContentView
를 호출하여 GUI 레이아웃이 새 방향으로 다시 수행되도록합니다.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.myLayout);
}
출처 : https://stackoverflow.com/questions/456211/activity-restart-on-rotation-android
'프로그래밍 언어 > Android' 카테고리의 다른 글
Android에서 이미지 보기의 색조를 설정하는 방법 (0) | 2021.09.09 |
---|---|
Android Studio의 "cannot resolve symbol R" (0) | 2021.09.09 |
Android 앱의 릴리스 버전을 빌드하기 전에 모든 디버그 로깅 호출을 제거하는 방법 (0) | 2021.09.08 |
Android Studio-Android SDK 경로 변경 방법 (0) | 2021.09.08 |
[안드로이드] 버튼을 클릭 할 때 대화 상자가 닫히지 않도록 하는 방법 (0) | 2021.09.08 |