1

アプリケーションを縦向きでのみ表示したいのでandroid:screenOrientation="portrait"、にActivityタグをAndroidManifest.xml入れsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);、アクティビティのonCreateメソッドを入れました。

これは、向きを縦向きにロックするために機能しますが、アクティビティが開始されると、一度表示されてから再び表示されるため、一種のフラッシュが表示されます。onCreateそれも2回呼び出されていることが確認できます。

このフラッシュにより、アプリケーションの後半でさらに強制終了が発生します。

このフラッシュをなくすにはどうすればよいですか?

編集

説明したアクティビティの前にスプラッシュ画面が表示されていました。2回実行されていたため、このアクティビティを2回(インテント経由で)2回実行しました。この問題を修正するには、このアクティビティがスプラッシュスクリーンクラスのインテントを使用してすでに開始されているかどうかを確認し、再度実行しないようにしました。修正は修正というよりは回避策でしたが、人々の役に立つことを願っています。

4

2 に答える 2

1

(マニフェストで)アクティビティのconfigChanges属性を使用すると、問題が解決すると思います。ConfigChanges属性のドキュメント

ただし、別の問題を回避しているだけです。あなたが本当に取り組むべきことは、なぜそれがFCを刺激するのかということです。それが起こる理由は絶対にないので、あなたもその問題を解決する必要があります。実行時の変更の処理に関する詳細情報。

注:パフォーマンス/ UXの問題に対処するには、最初のアプローチを使用してもかまいません。

なぜonCreate2回呼び出されるのか不思議に思うかもしれませんが、この問題に遭遇したとき、それは方向を修正してから別のアクティビティを作成することに関連していると思いますが、方向は異なります。2番目の活動が開始される前に、前者の活動は後者の方向に変わりました。また、キーガードもアクティビティであることを忘れないでください。しかし、これがこの理由で起こるかどうかはわかりません。

于 2011-08-16T20:47:23.103 に答える
1

入れないでください: "setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);"。AndroidManifestに仕事を任せてください。私はあなたがしたことは:

  1. ポートレートモードでのみ実行するようにアプリに指示します
  2. アクティビティがポートレートモードになるように指示します。これは、すでにこのようになっているかどうかに関係なく(フラッシュはこれから来る必要があります)。
  3. 私は間違っている可能性があります。
于 2011-08-16T20:54:52.280 に答える