Programing

Android에서 방향이 변경 될 때 활동을 다시 시작하지 않는 방법

crosscheck 2020. 12. 7. 07:51
반응형

Android에서 방향이 변경 될 때 활동을 다시 시작하지 않는 방법


캔버스에 뷰를 그리는 Android 앱을 만들고 있습니다. 기기의 방향이 변경되면 활동이 다시 시작됩니다. 나는 그것을 원하지 않는다.

오리엔테이션이 변경 될 때 활동을 다시 시작하지 않으려면 어떻게해야합니까?


이를 수행하는 방법에는 여러 가지가 있지만 여기제공된 것처럼

android:configChanges="keyboardHidden|orientation|screenSize"

필요에 따라 대신 구성 변경 사항을 수신 할 수 있습니다. 그런 다음을 재정의 onConfigurationChanged하고 호출 하여 이러한 변경 사항에 응답합니다 setContentView.

이것이 제가 해왔 던 방식이지만 다른 사람들의 생각을 알고 싶습니다.


다음과 같이 AndroidManifest.xml에서 활동을 정의하십시오.

   <activity
        android:name="com.name.SampleActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:icon="@drawable/sample_icon"
        android:label="@string/sample_title"
        android:screenOrientation="portrait" >
    </activity>

android:configChanges="orientation"활동에 대해 작성한 Android 매니페스트 파일을 확인하십시오 .


추가 android:configChanges="keyboardHidden|orientation"activity


android:configChanges="keyboardHidden|orientation|screenSize"활동 태그 에 쓰려고 했지만 작동하지 않습니다.

나는 방법을 많이 시도하지만 난이 추가 될 때까지 아무것도 작동 android:configChanges="keyboardHidden|orientation|screenSize"을 위해 모든 응용 프로그램 활동 하고 완벽하게 작동합니다.


Fragments를 사용하는 것이 좋습니다. 를 사용 setRetainInstance(true)하여 조각을 유지하겠다는 것을 알릴 수 있습니다 .


에 대한 xamarin사용자,

Android에서 방향 변경시 애플리케이션이 다시 시작되지 않도록하려면 다음을 추가하세요.

ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize

모든 활동 클래스의 활동 속성에. 예를 들어, 아래는 내 데모 코드입니다.

    [Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
        //Some code here
        }
    }

매니페스트의 모든 활동에 이것을 추가하십시오.

android:configChanges="orientation|screenSize"

예:

<activity android:name=".activity.ViewActivity"
        android:label="@string/app_name"
        android:configChanges="orientation|screenSize"/>

에 재시작을 방지하기 위해 keyboardHidden|orientation- 어떻게 안드로이드에서 해제 방향 변화를?
Android API 가이드를 따르십시오- 애플리케이션 클래스를 사용하여 런타임 변경 처리
- 회전 Android에서 활동 다시 시작


매니페스트 파일의 모든 앱 활동에 대해 android : configChanges = "keyboardHidden | orientation | screenSize"를 추가하기 만하면됩니다.


AndroidManifest.xml에 선언하십시오.

<activity android:name=".complex_examples.VideoPlayerActivity"
            android:configChanges="keyboard|keyboardHidden|orientation
                                  |screenSize|screenLayout|smallestScreenSize|uiMode"
            android:launchMode="singleTop"/>

그러나 조심하십시오 . Android 개발자 문서 는 더 나은 옵션이 남아 있지 않은 경우에만 수행해야한다고 말합니다.

참고 :이 속성의 사용은 피해야하며 최후의 수단으로 만 사용해야합니다. 구성 변경으로 인해 다시 시작을 올바르게 처리하는 방법에 대한 자세한 내용은 런타임 변경 처리를 참조하십시오.

If you are sure about doing it, you can handle the configuration changes by your self in onConfigurationChanged() method.

참고URL : https://stackoverflow.com/questions/4568558/how-to-avoid-restarting-activity-when-orientation-changes-on-android

반응형