2

APIレベル7用に構築されたシンプルなAndroidアプリがあります。唯一の珍しいことは、マニフェストにandroid:screenOrientation="portrait"が含まれていることです。また、そのマニフェストでは、APIレベルはandroid:targetSdkVersion = "11" android:minSdkVersion="7"として指定されています。

APIレベル8のAVDで期待どおりに動作しますが、APIレベル11のAVDで実行すると、そのメインアクティビティのonCreate()が起動時に2回実行されたことがわかりました。頭に浮かんだのは、構成が変更されたということだけだったので、次の行を入力しました。

android:configChanges = "mcc | mnc | locale | touchscreen |keyboard|keyboardHidden|ナビゲーション|方向|screenLayout| fontScale"

マニフェストと行にも:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

メインアクティビティに追加し、スーパー...行にブレークポイントを設定します。(Eclipse / ADTを使用して)デバッグすると、その行で中断します。

構成の何が変更されたかを確認する方法がわかりません。

APIレベル11のAVDでは、アプリを起動する前は画面が横向きになっていますが、アプリを実行しているときは、左上にあるので縦向きになっていると思います。

APIレベル8のAVDでは、メインアクティビティはこのブレークポイントに到達せず、onCreate()は1回だけ呼び出されます。

ここで、android:screenOrientation = "landscape"に変更すると、2つのAVDのどちらも構成の変更による中断を引き起こさないため、onCreate()は1回だけ実行されます。APIレベル8のAVDがこの設定でブレークポイントに到達した場合、少なくとも2つのAVDの動作は類似していました。

誰かがこれを見たことがありますか?これは、APIレベル11のAVDの奇妙な動作であり、おそらく手がかりがありますか?

また、プリファレンスの設定に使用されるこのシンプルなアプリの別のアクティビティが横向きモードで表示され、プリファレンス画面/アクティビティからメインアクティビティに戻ると、メインアクティビティがonCreate()で最初からやり直されることもわかりました。主なアクティビティは、別の構成変更によって発生します。マニフェストで設定アクティビティもポートレートモードにするように指定すると、その2番目の問題は解消されました。

1月

4

0 に答える 0