問題タブ [android-configchanges]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 構成の変更と TCP 接続を処理するサービスと AsyncTask
これが状況です: 私のアプリには 1 つのアクティビティがあり、長時間持続する TCP 接続を処理し、多くのもの (オブジェクトの HashTables、ボタン、ArrayLists、アダプターなど) で UI を動的に更新します。現時点では、AsyncTask で接続を処理し、保存する方法を探しています。
- 接続
- 動的に作成されたビューなどのすべての変数
画面が回転するか、ユーザーが電話を受けると、http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.htmlを見つけました。 これは私にはかなりクールに見えます。しかし、代わりにサービスを使用する必要があることもどこでも読んでいます。これは、TCP 接続が長く持続するのに適しているためです。AsyncTask を使用する理由:
- フラグメントを使用してTCP接続を保存できるようです
- オブジェクト、ボタンなどを回転/呼び出しから保存するために、とにかく似たようなことをする必要があります
- 接続が必要なアクティビティは 1 つだけです (複数のサービスが示されていませんか?)
サービスを提供する理由:
- TCP接続を保存するためにフラグメントを使用する必要はありません(それは本当ですか?クライアントが1つしかないため、通常のIntentService、または境界のあるサービスを使用して、これを行う必要がありますか?)
- 長時間の接続に適しています
「サービス」と言うときは、とにかくサービス内で AsyncTask を実行する必要があると想定しているため、メイン アクティビティでの接続は処理されません。私は何をすべきか?
android - 向きが変わったときにアクティビティをリロードせず、フラグメントを正しい順序に配置しない
アプリで Framgents を使用しており、タブレットで横向き (左右) と縦向き (上下) の両方にデュアル ペイン レイアウトを使用しています。
左の選択ペインにフラグメントをロードするアクティビティがあり、スピナーでいくつかの基準を選択して検索を実行できます。右側のフラグメントには、ListView での検索結果が表示されています。
Manifest.xml でこのアクティビティを使用するandroid:configChanges="orientation"
と、検索結果が保存されますが、本来あるべき左右ではなく、ランドスケープ モードで両方のペイン レイアウトが上下に表示されます。また、使用しない場合android:configChanges="orientation"
、両方のペイン レイアウトが正しい順序で表示されます (横向きモードでは左右) が、検索結果が表示されず、アクティビティが再開されます。
どうすれば解決できますか?何か案が?
本当にありがとう。
android - 向きの変更後に Google でサインインを使用する Android の複数のアクセス許可ダイアログ
私はしばらくこれに取り組んできました-そして、ここで回答を広範囲に検索しましたが、何も見つかりませんでした(解決策を逃した場合は申し訳ありません)。「Googleでサインイン」ボタン/ロジックを実装していますが、デバイスの向きを変更する場合を除いて、すべて正常に動作します。その場合、Google の権限ダイアログの複数のコピーが表示されます。(つまり、向きを 3 回変更すると、元の画面に戻る前にキャンセルしなければならないアクセス許可ダイアログのコピーが 3 つ存在します)。(権限ダイアログの例は、ここにあります)。
コードを複雑にしすぎたと思ったので、Google のチュートリアル ページ ( Getting Started/Sign-In ) のコードだけを使用して新しいアクティビティを作成しましたが、まだ同じ問題が発生しています。(以下のコード)
(FWIW、IntelliJの「新規->アクティビティ->ログインアクティビティ」オプションを使用して新しいアクティビティを作成しようとしましたが、同じ結果が得られました。)
それに加えて、Google の「クイックスタート」アプリを実行してみましたが、同じ問題がまだ発生しています。
この動作なしで「Google でサインイン」を正常に実装した人はいますか? 最後の手段として、認証アクティビティを常に縦向きに表示するように強制できると思いますが、それ以上の解決策があるかどうかを確認しようとしています.
前もって感謝します!
以下は、「簡略化された」アクティビティのコードです。
android - Android - 設定変更時に ViewPager のローダーが再起動しないようにするにはどうすればよいですか?
これらの手順に従ってを作成しましたViewPager
が、デバイスの構成が変更されると (デバイスのローテーションなど)、ローダーが再起動されるという問題があります。
これにより、不要なクエリが発生するだけでなく、ユーザーが最初のアイテムに戻る (つまり、デバイスを回転させる前に表示していたアイテムから離れる) ことで、UI がリセットされます。
クラスのメソッドsetRetainInstance(true)
によって返されるフラグメントを呼び出してみましたが、役に立ちませんでした。getItem()
ScreenSlidePagerAdapter
ここに同様の質問がありますが、より良い解決策があることを期待/望んでいますか??
android - アクティビティのレクリエーションなしで、プログラムでオリエンテーションを設定しますか?
使用するたびにsetRequestedOrientation(int)
、で方向を宣言したときとは異なる動作をしますManifest.xml
。(これは想定内)
私はそれを読みました(ドキュメントから):
アクティビティが現在フォアグラウンドにあるか、画面の向きに影響を与えている場合、画面はすぐに変更されます (アクティビティが再開される可能性があります)。
実際には、これは、アプリが開始されるたびに、デバイスの向きが で設定される向きではないsetRequestedOrientation(int)
場合、アクティビティが 2 回作成されることを意味します (1 回は「通常」、もう 1 回は要求された向きを反映するため)。
現時点では、アクティビティを 100% 構成変更防止にすることは価値がありません。アクティビティを 2 回作成することなく、要求された方向をコードで設定する方法が必要です。方法はありますか?
(configChanges で「orientation」フラグを設定するなどのハック的な回避策を使用しないことが望ましい)
編集:
受け入れられた答えは正しいです、それは単に論理的ではありません(意味がありません)。新しい読者のために、私が行ったことは、スタブ アクティビティ (主にあまり機能しない空のアクティビティ) を追加することでした。getRequestedOrientation()
それが望んでいるものとは異なる場合に使用するだけsetRequestedOrientation(int)
ですsetRequestedOrientation(int)
.
android - 構成の変更時にフラグメントの再作成を停止します (縦向きと横向きでレイアウトが異なります)
これが私のタブレットの縦向きと横向きのレイアウトデザインです
- 縦向きレイアウト
- メニュー ナビゲーション ドロワーと
- コンテンツフラグメント
- ランドスケープ レイアウト (デュアル ペイン)
- 左側のメニューフラグメント
- 右側のコンテンツフラグメント
ナビゲーション ドロワーにサポート ライブラリを使用していますandroid.support.v4.widget.DrawerLayout
使用事例 :
- 横向きモードで起動したアプリ
- ランドスケープ レイアウト - デュアル ペインが拡張され、データが読み込まれます
- 向きが変わりました
- メニューの断片が破壊されて切り離された
- 縦向きレイアウト - コンテンツ フラグメントが拡張されたナビゲーション ドロワー
- アクティビティに接続され、すぐに切り離されたナビゲーション ドロワー
- * ランドスケープ メニュー フラグメントはシステムによって再作成され、アクティビティに添付されるためです。*
- ナビゲーション ドロワーが取り外されているため、アプリがクラッシュする
stackoverflow ユーザーgoRGonによって提案された解決策を試してみましたが、うまくいくようです。
しかし、これがフラグメントの再作成を停止する最良の方法であるかどうか、提案が必要ですか?