問題タブ [ui-thread]

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.

0 投票する
2 に答える
2391 参照

android - AsyncTaskでアクティビティを開始するときにメモリリークが発生する(スレッドから変更)

私はAndroid開発にまったく慣れておらず、メモリリークが非常に大きいことに気付いたときに、最初のアプリケーションを完成させようとしていました。

スレッド内から新しいアクティビティを開始すると、リークが発生します。

このコードを実行した後のアプリのHPROFダンプは、スレッドが常にヒープに保持され、指数関数的に成長することを示しています。これを調査すると、リークの原因となるスレッド内のコンテキストを参照することになります。そのため、静的クラスで弱参照のみが含まれるこのバージョンになるまで、このコードを数回変更しました(これは他の投稿で言及されていることです)

スレッドでアクティビティを開始する理由は、低速で大きなWebサービスからデータを読み取る必要があるためです。これには時間がかかります。アクティビティに読み込みバーを表示し、完了するまで選択したアイテムを強調表示し、XMLparserその後新しいアクティビティを開始しました。

メモリリークを引き起こさずにスレッド内でアクティビティを開始する正しい方法がないのではないでしょうか。そして、もしそうなら、xmlパーサーが彼の仕事を終えた後にインテントを開始させる別の方法はありますか?


ウラジミールとヘイコのアドバイスで、スレッドをAnyncTaskに変更しました。保持されているヒープの拡張は停止しましたが、開始したAsyncTaskスレッドはまだヒープに残っています。これが私の新しいコードです:

私の問題を明確にするために、これが私のHPROFスレッド概要ヒープダンプの1つのコピーです(ユーザーレベルのためにMATのようにリンクや画像を含むHTMLを投稿することが許可されなかったため、読むのは非常に困難です...)。AsyncActivityAsyncTaskスレッドは376または344のヒープを保持します。アプリケーションのブラウザーを長くするにつれて、スレッドから保持されるヒープはますます多くなります。

0 投票する
3 に答える
520 参照

.net - Windows フォームで進行状況バーを使用する場合、「長いプロセス」は非 UI スレッドで実行する必要がありますか?

プログレス バーを使用する場合、UI スレッドで実行されますか? UI スレッドで実行されている長いタスクの進行状況バーをどのように表示するのか疑問に思ったので質問します。

開いて完全にレンダリングするのに時間がかかるウィンドウがいくつかあり、何かが起こっていることをユーザーに示す何かが必要です。それらの一部はせっかちで、UI が 1/4 秒間応答しなくなると、狂ったようにクリックし始めます。

つまり、長いプロセスは、必ずしもバックグラウンド スレッドで実行したいものではありません。この場合、プログレス バーをどのように表示しますか?

0 投票する
3 に答える
127 参照

.net - UI以外のスレッドを画面に表示できますか?

UIスレッドのみが画面に表示できますか、それとも他のスレッドもこれを実行できますか?

0 投票する
1 に答える
3177 参照

android - admob:UIスレッド外でAdRequestをロードする方法は?

広告が含まれるゲームを持っています。最終的に、遅延の原因は基本的には時間がかかる adRequest プロセスにあることがわかりました。

adRequest があるときに loadAd を実行するスレッドを作成するようなことをしようとしました。その結果、広告は表示されません。したがって、loadAd リクエストは UI スレッドで行う必要があると思います。これに関する回避策はありますか? とにかくUIスレッドがどのように機能するかについてはまだ理解していません

0 投票する
2 に答える
2808 参照

wpf - TPLの使用中にウィンドウ(WPF)がフリーズするのを回避する

SQLサーバーでSQLクエリを実行するボタンを持つWPFを構築しています(クエリの実行には時間がかかる場合があります)。そのために TPL を使用したいと考えています。

このコード: var result = Task.Factory.StartNew(() => { command.ExecuteNonQuery(); });

この例外が発生します: ExecuteNonQuery には、オープンで使用可能な接続が必要です。接続の現在の状態は閉じています。

これは、クエリが別のスレッドで実行され、開いている接続を認識していないことが原因だと思います。

質問が 2 つあります。 1. 新しいスレッドにこのオープン接続を知らせるにはどうすればよいですか? 2.これを解決した後、このクエリが原因でウィンドウがフリーズしないようにするにはどうすればよいですか。

ありがとう

0 投票する
1 に答える
319 参照

iphone - iPhoneのuitableviewでのデータの読み込みをキャンセルする

私のアプリでは、テーブルビューにロードするレコードが約70000個あります。読み込みには10分程度の時間がかかります。メインのUIthreadをブロックしているため、戻ったりボタンにアクセスしたりできません。この目的のために別のスレッドを使用するような別の方法や、別のアプローチはありますか?なんとか見せてください。

ありがとう、Vinod。

0 投票する
2 に答える
661 参照

ui-thread - Android で UI 用の新しいスレッドを作成する

アクティビティを作成した後、電話帳から読み取り、文字列操作を行い、ルールに基づいてメイン UI にさまざまなボタンを作成するスレッドを作成しました。

私は以下のコードを持っていますが、アプリケーションがどのように終了するかです。

誰でも私を助けてください。

次のエラーが表示されます。

util.concurrent.FutureTask.run(FutureTask.java:137) 06-24 21:52:36.436: エラー/AndroidRuntime(297): java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 06-24 で21:52:36.436: エラー/AndroidRuntime(297): java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 06-24 21:52:36.436: エラー/AndroidRuntime(297): Java で.lang.Thread.run(Thread.java:1096) 06-24 21:52:36.436: ERROR/AndroidRuntime(297): 原因: android.view.ViewRoot$CalledFromWrongThreadException: ビュー階層を作成した元のスレッドのみがその見解に触れてください。06-24 21:52:36.436: エラー/AndroidRuntime(297): android.view.ViewRoot.checkThread(ViewRoot.java:2802) で 06-24 21:52:36.436: エラー/AndroidRuntime(297): Android で。 view.ViewRoot.requestLayout (ViewRoot.java:594) 06-24 21:52:36.436:

0 投票する
1 に答える
1633 参照

android - これはUIスレッドで実行されますか

このコードは実際にAndroid(2.2以降)のUIスレッドで実行されますか?そうでない場合は、それを行う方法の例があります。

アクティビティでは、JSInterfaceを呼び出します

0 投票する
2 に答える
904 参照

.net - 制御外のUIスレッドアクセス

オブジェクトの状態を管理するオブジェクトがありSessionます(nhibernateセッションと同様)。このセッションは、内部セッション状態の更新を必要とする可能性のある外部ソースからのイベントをリッスンします。アクセスされるデータが一貫していることを確認するために、セッションにロックを実装しようとしましたが、非常に多くの厄介なエッジケースがあります。

代わりに、セッション(UIスレッド)を使用しているのと同じスレッドにこれらのイベントをマーシャリングする方が簡単な場合があります。通常、これはで行われControl.Invoke()ますが、これはデータオブジェクトであるためControl、アクセスすることはできません。

これは合理的なアプローチですか?セッション状態を更新する前に、このイベントをUIスレッドに取り込むにはどうすればよいですか?セッションの作成時に、を使用しDispatcherて現在のスレッドのディスパッチャーをキャプチャできますか?