問題タブ [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 投票する
30 に答える
900501 参照

android - Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません

次の例外は何を意味しますか。どうすれば修正できますか?

これはコードです:

これは例外です:

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

android - AndroidメソッドonCreate()のスレッドは、10%のケースでUiThreadを停止します

これは、私のアプリの最初のアクティビティのonCreateメソッドです。すべてのウィジェットを初期化し、インターネットからモデルデータをロードするスレッドを開始します。場合によっては、ネットワークが非常に遅いか応答していないときに、"initializeModelThread"CPU全体を使用しているように見え、onCreateメソッドを終了できません。

あるケースではLog.v("Time...)、300ミリ秒後に呼び出されたことがわかりましたが、HttpExceptionが停止するまで、画面は約20秒間黒のままでしたinitalizeModelThread。スレッドの優先度を低く設定したことがすでにわかります。

この場合、AsyncTaskの使用は役に立ちますか?その問題について他に何か考えはありますか?

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

android - Android: TabActivity - AsyncTask が完了する前にタブを追加しない

タブのデータをフェッチするために onCreate() で AsyncTask を開始する TabContentFactory を実装する TabActivity があります。AsyncTask が終了したら、onPostExecute() は UI 要素を直接更新できますよね? つまり、そのメソッドは UI スレッドで実行されるため、UI 要素にアクセスするときにそれ以上のスレッド同期は必要ないのでしょうか?

とにかく、私が抱えている問題は、AsyncTask がまだビジーである間に、UI スレッドが TabActivity で createTabContent() を呼び出すことです。少なくとも 1 つのタブを追加する必要があります。そうしないと、NullPointerException が発生します。しかし、AsyncTask が終了し、ProgressDialog が閉じられたときにのみタブを追加するにはどうすればよいでしょうか?

どなたか助けていただけると嬉しいです...

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

silverlight - UI をハングさせずに ObservableCollection を更新する

UI にぶら下がらずに大きな ObservableCollection を更新する (つまり、アイテムを追加する) ことは可能ですか?

各反復がコレクションにアイテムを追加している比較的大きなループ (500 反復) があるという事実であるかどうか疑問に思っています。

または、コレクションが更新され、UI に変更が通知されているかどうか。

または両方!

私はこのスレッドに出くわしましたが、それはディスパッチャーに関するまったく別の質問かもしれません (ディスパッチャーを使用すると役立つのはなぜですか?): Using BackgroundWorker to update the UI without freezes...?

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

java - AndroidProgressDialogは回転しません

これは私の最初のstackoverflowポストですので、私に優しくしてください!私がやろうとしていることは可能であると確信しており、問題を引き起こしているのは私が行った(または行っていない?)ことです...私はそれが何であるがわかりません。

私がやろうとしていること:
アプリがダウンロードされたデータを同期して処理している間、ProgressDialogを表示します。

問題:
ProgressDialogは表示されますが、回転しません(これにより、フリーズしたように見えます)。同期と処理が行われ、ProgressDialogが閉じ、アプリは通常どおり続行します。

現在どのようにそれを実行しようとしていますか:
ProgressDialogを作成します-アクティビティ
で同期を実行します-サービス
でデータを処理します-サービス
でProgressDialogを破棄します-アクティビティで

私が試したこと:
スレッドの使用(以下のコード)AsynTaskの使用(必要に応じてコードを提供できます)ハンドラーの使用(必要に応じてコードを提供できます)

私の質問に対する答えを探すのに多くの時間を費やした後、他の人が同じまたは同様の問題を抱えていて、上記のアイデアの1つを使用してそれを解決することができたようです。しかし、私は特定の問題を解決するためにこれらのアイデアを実装することができませんでした。これは私が間違っていることであると私に確信させます...私はただ何がわからないのです。

私が作成し、試行したすべての修正の基礎として使用している元のコード:
最初に

それから

だから今私はdoBindが別のスレッドで起こっていると仮定してUIスレッドをProgressDialogueを表示する以外に何もすることはありません...?

この問題についてサポートが必要な場合は、お知らせください。


編集:

代わりにハンドラーを使用するために使用しているコードは次のとおりです。これは、以前と同じ動作(スピナーは回転しません)を表示します。

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

multithreading - WP7 - UI スレッドにアクセスしていますか?

WP7 アプリケーションの UI スレッドにアクセスするにはどうすればよいですか?
役立つ場合は、次のコードを使用しています。


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

android - 別のスレッドまたは Android の BeginInvoke から表示される TextView の設定

私は Android 2.2 アプリケーションを開発しています。

アクティビティにイベント リスナーがあり、イベントを受け取ったときに TextView を表示するように設定したいと考えています。しかし、エラーがあります:

UIスレッドからのみ表示できるように設定できます。

C# と Windows Mobile には、BeginInvoke があります。Androidに似たようなものはありますか?

ありがとう。

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

android - ExpandableListView/SimpleCursorTreeAdapter を使用して UI スレッドで実行される SQLite クエリ

多数の RSS フィードを表示するための Android アプリを開発中です (そうです、このようなアプリは既にたくさんあることを知っています)。表示するデータはコンテンツプロバイダーがバックアップしており、API レベル 4 との下位互換性を維持したい。

を使用してExpandableListView、3 つの異なる RSS フィードのコンテンツを表示しています。のExpandableListViewアダプタは、次のサブクラスとして実装されていSimpleCursorTreeAdapterます。

このセットアップでは、すべてのコンテンツが期待どおりに読み込まれます。ただし、リスト コンテンツのロード中に、UI がランダムにハングまたはスタッターします。通常、ANR を取得するのに十分ではありませんが、それでも目立ち、非常に迷惑です!

この問題をデバッグするために、android.os.StrictMode を有効にし (すばらしい新機能/ツールです!)、エミュレーターを起動しました (Android 2.3 で)。リストのコンテンツが読み込まれると、次の StrictMode 出力が得られます。

これは合理的なようです!ではSimpleCursorTreeAdapter.getChildrenCursor()、コンテンツ プロバイダは UI スレッドで照会されますが、これはもちろん悪い考えであり、UI を確実にハングさせます。

(のスーパークラス)のJavaDoc(APIレベル4)を見て、次のように述べています。 CursorTreeAdapterSimpleCursorTreeAdaptergetChildrenCursor()

「UI のブロックを防ぐためにプロバイダーに非同期的にクエリを実行する場合は、null を返し、後で setChildrenCursor(int, Cursor) を呼び出すことができます。」.

すごい!それをしましょう!の実装を変更getChildrenCursor()して、クエリの実行とアダプターでの子カーソルの設定を担当する新しいタスクを開始します。タスクを開始した後、次のように null を返しますgetChildrenCursor()

は次のようにRefreshChildrenCursorTask実装されます。

2.3エミュレーターにアプリを再インストールして起動しました。それは魅力のように機能しました。さようなら、非応答 UI! しかし、喜びは長くは続きませんでした...次に行うことは、ターゲット デバイス (この場合は Android 2.2 を実行する Samsung Galaxy S) で同じコードを実行することでした。次にException、リスト フィード コンテンツの読み込み中に次の情報を取得しました。

のソース コードをざっと見てみると、SimpleCursorTreeAdapterから非同期に返される null に対処する方法がないことがわかりますgetChildrenCursor()。彼らは Android 2.3 でこの問題を解決したようですが、以前のバージョンの Android ではどのように回避すればよいのでしょうか? CursorTreeAdapter子カーソルを非同期的に更新できるようにするには、独自の実装を作成する必要がありますか?

誰かが同じ問題を抱えていて、おそらく (実行可能な) 回避策を見つけたことがありますか? そうでない場合は、続行する方法についてヒントを教えてもらえますか!? 私が得ることができる助けを本当に感謝します

前もって感謝します!

よろしく、ジェイコブ

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

wpf - データバインディングは常にUIスレッドにマーシャリングしますか?

Silverlight 3および4のプロパティにバインドする場合、Windows Phone 7バージョンのSilverlightおよびWPF3.5および4では、プロパティ変更通知は常にUIスレッドにマーシャリングされますか?私がそれに頼ることができず、私のコードでマーシャリングをしなければならないシナリオを知っていますか?

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

android - Android で新しいアクティビティを開始する前に、onClickListener で UI の変更をどのように処理しますか?

このフォーラムで検索していますが、質問に対する回答が見つかりません。次の問題があります。

イメージビューと 2 つのテキストがあり、次のアクティビティをロードする前に視覚的なフィードバックを表示するために選択の色を変更したいと考えています。

ボタンとテキストが変更され、新しいアクティビティが開始されることを期待しています。しかし、テキストは変わらず、アクティビティが開始されます。UI スレッド (runOnUiThread(new Runnable() {...}) で runnable の 3 行を呼び出すと、アクティビティが開始される前に変更が適用されます。メインスレッド別名 UI スレッド。

これは、UI スレッドへの変更が UI スレッドですぐに実行されないということですか? または、私は何か完全に間違っていますか?

ベスト、アダム