問題タブ [android-threading]
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.
android - 別のスレッドを使用している場合、ProgressBar が表示されない
円形の不確定なプログレスバーを表示してから、スレッドを実行します。これには数秒かかる場合があります (メソッド内で別の AsyncTask が実行されているため、おそらく AsyncTask を試しましたが、機能しませんでした)。ただし、progressBar は Thread が完了した直後にのみ表示されます。ユーザーが何かが起こっていることを確認できるように、スレッドを実行する前にそれを表示する方法は?
編集:コードはかなり複雑なので、長い説明なしですべてを添付することはできませんが、コードの重要な部分を添付しようとします
google-maps - Kotlin コルーチンを使用した Google MapOverlays のビットマップの生成
サーバーが送信したサムネイルを編集し、それらを Google GroundOverlay としてレンダリングするコードのセクションを構築する際に問題が発生しています。
この問題は、Kotlin コルーチンに起因しているようです。まず、Google のドキュメントによると、グラウンド オーバーレイはメイン スレッドで作成する必要があります。それらの作成をメイン スレッドから実行すると、致命的なエラーが発生します。したがって、これらの GroundOverlays をメイン スレッドで作成するようにしました。ただし、メインからスレッドにビットマップを作成しようとすると、オーバーレイがまったく表示されないようです。
suspend 関数は、メイン スレッドから呼び出されます。今、
および上記のコメントアウトされたセクション (非同期を使用せずに)
どちらも問題なく GroundOverlay を生成します。Dispatchers.Unconfined を他のものに変更すると、問題が発生します。Dispatchers.Main でさえ、GroundOverlay がマップに表示されません。GroundOverlays が作成されました。ログ ステートメントで確認しました。それらの透明性は、可視性と同様に期待されています。問題はビットマップにあるようです。await() の仕組みを理解していないと思います。ビットマップが返されて準備が整うまで、サスペンド機能を一時停止すると考えました。
これは、エラーを特定するための簡略化されたコードです。各サムネイルは場所と時刻に応じてスタイルが調整されるため、Dispatchers.Default でこれを行う必要があります。この処理をメイン スレッドで行うと、UI での処理が難しくなります。