1

manifest.xml以下のタグで指定しました

<activity android:screenOrientation="fullsensors
          android:configChanges="orientation|keyboardhidden|keyboard"
</activity>

またandroid:configChanges="Orientation|keyboardhidden|keyboard"、「方向」または「キーボードが非表示/表示」の場合にアプリの再作成を避けることを意味します

App クラスでは、すべてのアクティビティのライフサイクル コールバックを呼び出しています。また、デバイスを回転させたり向きを変えたりしても、アプリの再作成は行われないと予想していました。つまり、次のコールバックは順番に呼び出されないため、android:configChanges. コールバックはonPause() onStop() onDestroy() onCreate() onStart() onResume()、デバイスを回転させるたびに、アプリが再作成され、前述のライフ サイクルのコールバックが呼び出されます。

なぜそれが起こるのか説明はありますか?

4

1 に答える 1

1

ここでは に含まscreenSizeれていませんandroid:configChanges

ドキュメントによると

注意: Android 3.2 (API レベル 13) から、デバイスが縦向きと横向きに切り替わると、「画面サイズ」も変わります。したがって、API レベル 13 以降 (minSdkVersion および targetSdkVersion 属性で宣言されている) 向けに開発するときに方向の変更によるランタイムの再起動を防止する場合は、「orientation」値に加えて「screenSize」値を含める必要があります。つまり、android:configChanges="orientation|screenSize" を宣言する必要があります。ただし、アプリケーションが API レベル 12 以下をターゲットにしている場合、アクティビティは常にこの構成変更自体を処理します (Android 3.2 以降のデバイスで実行されている場合でも、この構成変更によってアクティビティが再開されることはありません)。

したがって、コールバックを受け取りたい場合onConfigurationChangedは、.. を追加する必要がありscreenSizeますandroid:configChanges

詳細については、これを見ることができます

于 2014-10-16T10:49:43.443 に答える