スレッドでProgressDialogを使用しながら、オリエンテーションの変更でアプリケーションがクラッシュします
-
28-10-2019 - |
質問
- >最初のアクティビティでスレッドを実装しました。また、進行状況ダイアログも使用しました。そのため、今では(その画面のみ)オリエンテーション中にアプリケーションがクラッシュします - メモリが漏れた例外が与えられます。そして、これの解決策として、私はここから私が置くべきだということだけを知るようになりました
android:configChanges="keyboardHidden|orientation"
しかし今、そのアクティビティの私のoncreate()方法は呼び出されていないため、OrientationChangesでこの方法を呼び出す必要があります。それで、私はこの段階で何をすべきですか?
解決
このブログをご覧ください:
StackoverFlowには、他にも同様の質問があります。進行状況]ダイアログとバックグラウンドスレッドがアクティブになった場合、画面の向きの変化を処理する方法は?
最初のオプションを使用している場合、エミュレータにはoncreate()を2回呼び出すバグがあることを経験しましたが、実際のデバイスでは問題になってはなりません。
他のヒント
これをマニフェストファイルに追加します
android:screenOrientation="landscape" or android:screenOrientation="portrait"
例 :
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
あなたは本当にあなたのアプリのオリエテーションの変更を処理したいですか?
そうでない場合は、設定できます screenOrientation
Manifest.xmlファイルの属性であるため、携帯電話のオリエンテーションに関係なく、アプリはその方向を維持します。
そうした場合は、この方法をオーバーライドする必要があります public void onConfigurationChanged (Configuration newConfig)
, 、ここでは、アプリのConfigure(Orientation、Keyboard Hiddenなど)変更を処理できます。これをオーバーライドしないと、システムは単にアプリをシャットダウンして再起動します。これにより、メモリの漏れが発生します。