問題タブ [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.
android - Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません
次の例外は何を意味しますか。どうすれば修正できますか?
これはコードです:
これは例外です:
android - AndroidメソッドonCreate()のスレッドは、10%のケースでUiThreadを停止します
これは、私のアプリの最初のアクティビティのonCreateメソッドです。すべてのウィジェットを初期化し、インターネットからモデルデータをロードするスレッドを開始します。場合によっては、ネットワークが非常に遅いか応答していないときに、"initializeModelThread"
CPU全体を使用しているように見え、onCreateメソッドを終了できません。
あるケースではLog.v("Time...)
、300ミリ秒後に呼び出されたことがわかりましたが、HttpExceptionが停止するまで、画面は約20秒間黒のままでしたinitalizeModelThread
。スレッドの優先度を低く設定したことがすでにわかります。
この場合、AsyncTaskの使用は役に立ちますか?その問題について他に何か考えはありますか?
android - Android: TabActivity - AsyncTask が完了する前にタブを追加しない
タブのデータをフェッチするために onCreate() で AsyncTask を開始する TabContentFactory を実装する TabActivity があります。AsyncTask が終了したら、onPostExecute() は UI 要素を直接更新できますよね? つまり、そのメソッドは UI スレッドで実行されるため、UI 要素にアクセスするときにそれ以上のスレッド同期は必要ないのでしょうか?
とにかく、私が抱えている問題は、AsyncTask がまだビジーである間に、UI スレッドが TabActivity で createTabContent() を呼び出すことです。少なくとも 1 つのタブを追加する必要があります。そうしないと、NullPointerException が発生します。しかし、AsyncTask が終了し、ProgressDialog が閉じられたときにのみタブを追加するにはどうすればよいでしょうか?
どなたか助けていただけると嬉しいです...
silverlight - UI をハングさせずに ObservableCollection を更新する
UI にぶら下がらずに大きな ObservableCollection を更新する (つまり、アイテムを追加する) ことは可能ですか?
各反復がコレクションにアイテムを追加している比較的大きなループ (500 反復) があるという事実であるかどうか疑問に思っています。
または、コレクションが更新され、UI に変更が通知されているかどうか。
または両方!
私はこのスレッドに出くわしましたが、それはディスパッチャーに関するまったく別の質問かもしれません (ディスパッチャーを使用すると役立つのはなぜですか?): Using BackgroundWorker to update the UI without freezes...?
java - AndroidProgressDialogは回転しません
これは私の最初のstackoverflowポストですので、私に優しくしてください!私がやろうとしていることは可能であると確信しており、問題を引き起こしているのは私が行った(または行っていない?)ことです...私はそれが何であるかがわかりません。
私がやろうとしていること:
アプリがダウンロードされたデータを同期して処理している間、ProgressDialogを表示します。
問題:
ProgressDialogは表示されますが、回転しません(これにより、フリーズしたように見えます)。同期と処理が行われ、ProgressDialogが閉じ、アプリは通常どおり続行します。
現在どのようにそれを実行しようとしていますか:
ProgressDialogを作成します-アクティビティ
で同期を実行します-サービス
でデータを処理します-サービス
でProgressDialogを破棄します-アクティビティで
私が試したこと:
スレッドの使用(以下のコード)AsynTaskの使用(必要に応じてコードを提供できます)ハンドラーの使用(必要に応じてコードを提供できます)
私の質問に対する答えを探すのに多くの時間を費やした後、他の人が同じまたは同様の問題を抱えていて、上記のアイデアの1つを使用してそれを解決することができたようです。しかし、私は特定の問題を解決するためにこれらのアイデアを実装することができませんでした。これは私が間違っていることであると私に確信させます...私はただ何がわからないのです。
私が作成し、試行したすべての修正の基礎として使用している元のコード:
最初に
それから
だから今私はdoBindが別のスレッドで起こっていると仮定してUIスレッドをProgressDialogueを表示する以外に何もすることはありません...?
この問題についてサポートが必要な場合は、お知らせください。
編集:
代わりにハンドラーを使用するために使用しているコードは次のとおりです。これは、以前と同じ動作(スピナーは回転しません)を表示します。
。
。
multithreading - WP7 - UI スレッドにアクセスしていますか?
WP7 アプリケーションの UI スレッドにアクセスするにはどうすればよいですか?
役立つ場合は、次のコードを使用しています。
android - 別のスレッドまたは Android の BeginInvoke から表示される TextView の設定
私は Android 2.2 アプリケーションを開発しています。
アクティビティにイベント リスナーがあり、イベントを受け取ったときに TextView を表示するように設定したいと考えています。しかし、エラーがあります:
UIスレッドからのみ表示できるように設定できます。
C# と Windows Mobile には、BeginInvoke があります。Androidに似たようなものはありますか?
ありがとう。
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)を見て、次のように述べています。 CursorTreeAdapter
SimpleCursorTreeAdapter
getChildrenCursor()
「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
子カーソルを非同期的に更新できるようにするには、独自の実装を作成する必要がありますか?
誰かが同じ問題を抱えていて、おそらく (実行可能な) 回避策を見つけたことがありますか? そうでない場合は、続行する方法についてヒントを教えてもらえますか!? 私が得ることができる助けを本当に感謝します!
前もって感謝します!
よろしく、ジェイコブ
wpf - データバインディングは常にUIスレッドにマーシャリングしますか?
Silverlight 3および4のプロパティにバインドする場合、Windows Phone 7バージョンのSilverlightおよびWPF3.5および4では、プロパティ変更通知は常にUIスレッドにマーシャリングされますか?私がそれに頼ることができず、私のコードでマーシャリングをしなければならないシナリオを知っていますか?
android - Android で新しいアクティビティを開始する前に、onClickListener で UI の変更をどのように処理しますか?
このフォーラムで検索していますが、質問に対する回答が見つかりません。次の問題があります。
イメージビューと 2 つのテキストがあり、次のアクティビティをロードする前に視覚的なフィードバックを表示するために選択の色を変更したいと考えています。
ボタンとテキストが変更され、新しいアクティビティが開始されることを期待しています。しかし、テキストは変わらず、アクティビティが開始されます。UI スレッド (runOnUiThread(new Runnable() {...}) で runnable の 3 行を呼び出すと、アクティビティが開始される前に変更が適用されます。メインスレッド別名 UI スレッド。
これは、UI スレッドへの変更が UI スレッドですぐに実行されないということですか? または、私は何か完全に間違っていますか?
ベスト、アダム