問題タブ [android-handlerthread]
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 - スレッド クラスから内部ハンドラ クラスにメッセージを送信できません
次のクラスがあるとしましょう...
そしてそれを始める...
問題はSignalRHandler
、メインクラスから送信されたメッセージを受信できないことです。
私は何か間違ったことをしたと確信していますアドバイスをお願いします...
android - Android: HandlerThread が開始された後はどうなりますか?
スレッドに関連付けられたルーパーは、thread.start() が返された直後にメッセージ キューにメッセージが到着するのを待っていますか? その場合は、このスレッドのルーパーを handleMessage() を実装するクラスに関連付けるだけです。これは正しい実装でしょうか?
java - HandlerThread でのメッセージの損失
必要に応じて GridView のデバイス上の写真からビットマップを作成するための HandlerThread クラスを拡張するクラスがありますが、時々、写真のビットマップを作成する代わりに、GridView アイテム (ImageView) に何も入力せず、理由がわかりません。これは事件です。助けてください=)
HandlerThread クラス:
}
GridView クラス:
}
そして、ビットマップを作成するクラス:
android - HandlerThread.quit() の後に HandlerThread.start() を 2 回呼び出すと、IllegalThreadStateException が発生しました。
初めて、バックグラウンド サービスを処理するために HandlerThread.start() を呼び出します。すべての作業が完了したら、HandlerThread.quit() を呼び出してこのスレッドを終了したいと思います。
次に、この Handler を 2 回目に開始し、HandlerThread.isAlive() を確認すると、isAlive() は false を返しますが、HandlerThread.start() によって再度 HandlerThread を呼び出すと、
しかし、 IllegalThreadStateExceptionを取得しました。なぜですか?
handlerThread.start() を安全に再度呼び出す前に、どうすれば本当に HandlerThread を停止できますか?
java - Thread/Runnable/Handler/Looper アプローチを介して単純な非同期タスクを実行する Android
を実装するのではなく、///アプローチを使用Thread.sleep(5000)
してボタンクリックで、 5秒の遅延後に乱数を表示することを任されています。私の問題は、前述のアプローチでこのタスクを実装する方法の例をオンラインで見つけるのに問題があることです。では、一般的な/関連するプラクティスに従って、上記で説明したこの単純なタスクをどのように実装しますか?Handler
Looper
Thread
Runnable
AsyncTask
HandlerThread
Looper
考えた後のように(私は主に上記の私の質問について今すぐ知りたいです):
- ボタンを複数回クリックしても、クリックするたびにプロセスが再起動されないようにしたいと思います(5秒が経過した場合のみ)。
- オリエンテーションが 5 秒の遅延の途中で発生した場合でも、この単純なタスクをオリエンテーションの変更全体で維持できるようにしたいと考えています。
Thread.sleep(5000)
後、考えた後:
- 乱数を表示する Button と TextView は、my
MainActivity
が呼び出すフラグメント内に存在します。
android - HandlerThread の開始後に getLooper() が null を返す
クラス extends がHandlerThread
あり、次のようになります。
上記のように、prepare()
関数はスレッドを開始し、run()
終了するのを待ってから、ルーパーを取得しようとします。
別のクラスで、インスタンスを作成してMyHandlerThread
開始します。
コンソールに表示されるログ:
関数内で、スレッドが既に開始されている (実行されている)にもかかわらずprepare()
、呼び出しがnullgetLooper()
を返すのはなぜですか?run()
android - Android の 2 つの HandlerThreads 間の同期オブジェクト
2 つのハンドラー スレッド オブジェクト間で Android のオブジェクト モデルを同期したいと考えています。1 つのオブジェクトは「観察可能」で、2 つ目はオブザーバーです。どちらも独自のスレッドで無限に機能します。オブザーバーは「registerListener」メソッドでobservableに登録し、独自の参照と独自のHandlerを渡します。
また、オブザーバブル オブジェクトは、オブザーバー オブジェクト モデルにコールバック メソッド (ハンドラー) によって渡されます。オブジェクト モデルは「最終」として宣言されます。これは、無限に新しいオブジェクトを作成するのではなく、そのフィールドを新しい値 (ゲッターとセッター) で更新するためです。
オブジェクト参照をオブザーバーに渡したくありません (オブジェクトは変更可能です)。また、スレッドをブロックしたくないため、「同期」キーワードを使用したくありません。
だから私の考えは、「観察可能な」オブジェクトに2つの同じオブジェクトモデルを作成するということです。それらは両方とも「最終」であり、そのうちの1つは「観察可能な」オブジェクトによって使用され、そのスレッドで変更され、2番目はオブザーバースレッドの最初のオブジェクトに基づいて変更されます。したがって、オブジェクトはオブザーバー ハンドラーによって同期されます。それは良いアイデアです?私の説明が明確であることを願っています。