問題タブ [android-looper]
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 によって処理されている Handlers または Messages に異なる優先度を割り当てることはできますか?
Android でバックグラウンドのようなタスクを実行する推奨される方法は、何らかのワーカー スレッドを開始することであることは認識していますが、バックグラウンド タスクが小さくて多数の場合に利用できる、より簡単な代替手段があるかどうか疑問に思っています。だからここに私の質問があります:
UI スレッド Looper 用の新しい Handler を作成するとき、UI を実行するデフォルトの Handler よりも優先度を低くすることはできますか? あるいは、ハンドラ/ルーパーによって処理されるメッセージをキューに入れるとき、個々のメッセージにデフォルトのメッセージよりも低い優先度を与えることはできますか?
これが可能であれば、私のアプリには十分であり、ワーカー スレッドを持ち、UI とワーカー スレッドをインターフェイスするために必要な余分なコーディングを避けることができると考えています。
java - 無限ループに加えてルーパーを実行する方法
無限ループを実行している別のスレッドがあります。これは、ハンドラーを介してメインの ui スレッドも更新します (私のスレッド > ハンドラー > ui スレッド)。
2 番目のスレッドでの無限ループ:
ただし、メインの UI スレッドを介してスレッド内のいくつかのオブジェクトを変更したいと考えています。
反対方向 (ui スレッド > ハンドラー > 自分のスレッド) で動作する追加のハンドラーを作成する場合、ルーパーと無限ループを同時に実行する必要があります - どうすればこれを達成できますか? 関連イベントはどこで呼び出せlooper.loop()
ますか?
android - ルーパーを使用するかどうか
Android のドキュメントでLooper
は、使用するかどうかが明確ではありませLooper
ん。私は多くの場所で を使用するLooper
のでHandler
はなく、AsyncTask
または同様の非メイン スレッドの方法論を使用するように言っているのを見てきました。
では、使用するLooper
かどうかは?
はいの場合、いつ使用する必要がありますか? スレッドからメイン スレッドに UI 更新メッセージを渡す場合のみ、または他の場合もありますか?
android - Android ルーパーと UI スレッド
ドロップボックスで公開されているクロスプラットフォーム ライブラリを調査しています。次のコードはそれからのものです。質問があります (1)メインルーパーに接続するハンドラを作成します。このような方法で UI スレッド ハンドラを作成できると聞いたことがあります。しかし、それは元のUIスレッド(アクティビティUIスレッド)と関係がありますか、それとも本当に別の分離されたUIスレッドを作成しますか?
2 つの ui スレッドがある場合、1 つの ui スレッドが別の ui コンポーネントにアクセスしてその ui を変更することは可能ですか?
そしてそれはActivityで呼び出されました
java - Realm : Runnable で RealmChangeListener を操作する
私は私の. しかし、から追加/削除しようとすると、.database
Android Application
RealmChangeListener
Runnable
exception
java.lang.IllegalStateException: 非ルーパー スレッドからリスナーを削除/登録することはできません
Runnable を使用しなくても問題なく動作しています。以下は私のコードです:
作業コード:
編集:動作しないコードを更新:
したがって、RealmChangeListener が Runnable で正しく動作するようにするには、どのような団体でもサポートできます。ありがとうございました。
android - メインスレッドの Looper.loop() が UI スレッドをブロックしないのはなぜですか?
今日、ハンドラーとルーパーがどのように連携するかについてのブログとソース コードを読みました。
私が学んだことに基づいて、ThreadLocal
魔法を使用することで、各スレッドに 1 つのルーパーしか持つことができません。prepare
通常、ハンドラーはメイン スレッドで開始されます。そうでない場合は、別のスレッドでルーパーを手動で開始または呼び出してからループする必要があります。
私を本当に混乱させたのはloop()
、メインスレッドでした。Looperのソースコードでこれを読んだように。メッセージ キューを処理し、コールバックが処理するメッセージをディスパッチするのは無限ループです。
このhttps://stackoverflow.com/a/5193981/2290191によると、Handler とその Looper は同じスレッドで実行されます。
メイン スレッドに無限ループがあると、UI システム全体がブロックされませんか?
何かを見逃すなんて、私はとてもばかげているに違いないことを知っています。しかし、誰かがこの背後にある秘密を明らかにするのは素晴らしいことです.
java - Android クライアント: Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できない
PythonサーバーとJavaクライアントからの次のコードが正常に機能しています。ただし、これと同じ概念を使用して、Android から ssl を使用してクライアントからテキスト メッセージを送信したいと考えています。以下は、私が Python と Java 用に書いたコードで、問題なく動作します。
Python サーバーコード:
これは私のJavaコードです:
更新した次の Android コードがありますが、まだエラーがあります。
送信するメッセージを入力すると、出力が次のようになります (ソケットの作成の問題: なぜ?):