問題タブ [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.

0 投票する
0 に答える
606 参照

android - Looper によって処理されている Handlers または Messages に異なる優先度を割り当てることはできますか?

Android でバックグラウンドのようなタスクを実行する推奨される方法は、何らかのワーカー スレッドを開始することであることは認識していますが、バックグラウンド タスクが小さくて多数の場合に利用できる、より簡単な代替手段があるかどうか疑問に思っています。だからここに私の質問があります:

UI スレッド Looper 用の新しい Handler を作成するとき、UI を実行するデフォルトの Handler よりも優先度を低くすることはできますか? あるいは、ハンドラ/ルーパーによって処理されるメッセージをキューに入れるとき、個々のメッセージにデフォルトのメッセージよりも低い優先度を与えることはできますか?

これが可能であれば、私のアプリには十分であり、ワーカー スレッドを持ち、UI とワーカー スレッドをインターフェイスするために必要な余分なコーディングを避けることができると考えています。

0 投票する
0 に答える
376 参照

java - 無限ループに加えてルーパーを実行する方法

無限ループを実行している別のスレッドがあります。これは、ハンドラーを介してメインの ui スレッドも更新します (私のスレッド > ハンドラー > ui スレッド)。

2 番目のスレッドでの無限ループ:

ただし、メインの UI スレッドを介してスレッド内のいくつかのオブジェクトを変更したいと考えています。

反対方向 (ui スレッド > ハンドラー > 自分のスレッド) で動作する追加のハンドラーを作成する場合、ルーパーと無限ループを同時に実行する必要があります - どうすればこれを達成できますか? 関連イベントはどこで呼び出せlooper.loop()ますか?

0 投票する
0 に答える
40 参照

android - ルーパーを使用するかどうか

Android のドキュメントでLooperは、使用するかどうかが明確ではありませLooperん。私は多くの場所で を使用するLooperのでHandlerはなく、AsyncTaskまたは同様の非メイン スレッドの方法論を使用するように言っているのを見てきました。

では、使用するLooperかどうかは?

はいの場合、いつ使用する必要がありますか? スレッドからメイン スレッドに UI 更新メッセージを渡す場合のみ、または他の場合もありますか?

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

android - Android ルーパーと UI スレッド

ドロップボックスで公開されているクロスプラットフォーム ライブラリを調査しています。次のコードはそれからのものです。質問があります (1)メインルーパーに接続するハンドラを作成します。このような方法で UI スレッド ハンドラを作成できると聞いたことがあります。しかし、それは元のUIスレッド(アクティビティUIスレッド)と関係がありますか、それとも本当に別の分離されたUIスレッドを作成しますか?

2 つの ui スレッドがある場合、1 つの ui スレッドが別の ui コンポーネントにアクセスしてその ui を変更することは可能ですか?

そしてそれはActivityで呼び出されました

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

java - Realm : Runnable で RealmChangeListener を操作する

私はの. しかし、から追加/削除しようとすると、.databaseAndroid ApplicationRealmChangeListenerRunnableexception

java.lang.IllegalStateException: 非ルーパー スレッドからリスナーを削除/登録することはできません

Runnable を使用しなくても問題なく動作しています。以下は私のコードです:

作業コード:

編集:動作しないコードを更新:

したがって、RealmChangeListener が Runnable で正しく動作するようにするには、どのような団体でもサポートできます。ありがとうございました。

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

android - メインスレッドの Looper.loop() が UI スレッドをブロックしないのはなぜですか?

今日、ハンドラーとルーパーがどのように連携するかについてのブログとソース コードを読みました。

私が学んだことに基づいて、ThreadLocal魔法を使用することで、各スレッドに 1 つのルーパーしか持つことができません。prepare通常、ハンドラーはメイン スレッドで開始されます。そうでない場合は、別のスレッドでルーパーを手動で開始または呼び出してからループする必要があります。

私を本当に混乱させたのはloop()、メインスレッドでした。Looperのソースコードでこれを読んだように。メッセージ キューを処理し、コールバックが処理するメッセージをディスパッチするのは無限ループです。

このhttps://stackoverflow.com/a/5193981/2290191によると、Handler とその Looper は同じスレッドで実行されます。

メイン スレッドに無限ループがあると、UI システム全体がブロックされませんか?

何かを見逃すなんて、私はとてもばかげているに違いないことを知っています。しかし、誰かがこの背後にある秘密を明らかにするのは素晴らしいことです.

0 投票する
0 に答える
248 参照

android - Looper.loop は複数のルーパーを作成できますか

複数回呼び出された Looper.loop() が複数のルーパーを作成するかどうかを知りたいですか??以下のコードを見つけて、このコードが原因で複数のルーパーが作成されるかどうか教えてください。もしそうなら、これを解決するためのアドバイスをください。

コードスニペット

前もって感謝します

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

java - Android クライアント: Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できない

PythonサーバーとJavaクライアントからの次のコードが正常に機能しています。ただし、これと同じ概念を使用して、Android から ssl を使用してクライアントからテキスト メッセージを送信したいと考えています。以下は、私が Python と Java 用に書いたコードで、問題なく動作します。

Python サーバーコード:

これは私のJavaコードです:

更新した次の Android コードがありますが、まだエラーがあります。

送信するメッセージを入力すると、出力が次のようになります (ソケットの作成の問題: なぜ?):