問題タブ [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-service - Android IPC メカニズムを使用するタイミング
Android で IPC を実行するには、コンテンツ プロバイダー、メッセージ、AIDL、非同期タスク、IntentService など、いくつかの方法があります。
それぞれが特定の問題を解決することを目指しているようです。
どちらを使用するかを決定する方法は?
他のサービスまたはアクティビティがこのサービスからデータを取得すると同時に、サービスをバックグラウンドで実行し続ける必要があります。
前もって感謝します!
android - ViewRootImpl$CalledFromWrongThreadException が正確でないのはなぜですか?
非 UI スレッドから(古い行から新しい行へ) TextView を行ごとに更新するスニペット:setText()
コードを実行すると、さまざまなスタック トレースでCalledFromWrongThreadExceptionが発生します (以下の「スタック トレース#1」と「スタック トレース #2」を確認してください)。両方のバリアント (単純なループレスThreadから、または内部に Looper を持つHandlerThreadから View を更新) では、例外のスローは正確ではありません。ワーカー スレッドを介した各 UI の更新後にイベントが正確に発生しません。
次の呼び出しルーチン (同じ入力条件) でのシステムの動作が持続しない理由を考えている人はいますか?
スタックトレース #1 (頻度: 高; ほとんどの場合)
スタックトレース #2 (頻度: まれ; 1 回キャッチ)
注:
- ビューが遅滞なく更新されたときに、「ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます」というエラーはありません。説明は問題を完全にはカバーしていません ( 「Stacktrace #2」のみ)。
- OS:アンドロイド6.0。
android - HandlerThreads は Android OS によって自動的に殺されますか?
バックグラウンド作業を行うために使用するHandlerThread
inApplication
クラスがあるとします。Application
このスレッドを自分で停止する必要がありますか?それともインスタンスと共に OS によって強制終了されますか? 私のコードは次のようになります。
android - HandlerThread の handleMessage() が呼び出されない
HandlerThread と Handlers を使用しているときに奇妙な問題が発生しました (Handlers とは、android.os.handler を意味します)。Fragment から別の Handler Thread にメッセージを渡そうとしています。メッセージを処理するために handleMessage をセットアップしました。しかし、それは呼び出されません。start()を使用してスレッドを開始した後(ルーパーが準備された後)、ハンドラースレッドのルーパーを取得しました。また、ハンドラーがhasMessage()を使用してメッセージを取得したことも確認しました。すべて順調。私は混乱しています。親切に私を助けてください.私のコードは以下の通りです.
フラグメント コード:
ハンドラスレッド
android - ハンドラー スレッド - NetworkOnMainThread 例外 (android.os.handler)
これは、上に投稿された質問の複製ではありません。HAndlerThread が newThread を開始し、NetworkOnMainThread 例外が発生するため、奇妙なエラーだと思います。通常の NetworkOnMainThread 例外を解決するのは、まったく新しい問題です。これをマーク解除してください。
こんにちは、まず私は HandlerThread を練習しています。Fragment を使用してハンドラ スレッドを開始し、スレッドにメッセージを送信しました。HandlerThread のハンドル メッセージ内で、ネットワーク呼び出しを使用して画像をダウンロードします。次に、MainThread のハンドラーを使用して、ダウンロードした画像を UI スレッドに投稿します。しかし、このアプリケーションを実行すると NetworkOnMainThread Exception が発生します。以下は Fragment と Handler Thread のコードです。
断片:
ハンドラー スレッド:
アクティビティの loadImage メソッド:
また、ログを使用して現在のスレッド (HandlerThread の handleMessage 内) を確認すると、メインにいるときにログ メッセージが表示されます。それはどのように可能ですか?私は何か間違ったことをしていますか?
android - 多くの HandlerThreads が生きていて、何もせず、ただ待っているのは悪いことですか?
私は自分の Android プロジェクトHandler
で全体と組み合わせて使用します。HandlerThread
私はサービスでそれらのほとんどを使用します。そこでは、優先度の低い個々の HandlerThread に支えられた私の Handlers が で作成されonCreated()
、 で停止されonDestroy()
ます。
彼らの多くはずっと待っています。たとえば、5 分ごとに数秒間処理します。
合計で、私のアプリには約 20 のスレッドがあります (そのうちの半分は HandlerThreads です)。では、非常に多くのスレッドが開いていることはパフォーマンスの問題ですか? Javaでスレッドを待機させるのは悪いことですか? 私はそれが正しいはずだということを学びました。それが当てはまるかどうかを確認したいだけですHandlerThread
。
java - 1 つの目的のために HandlerThread を作成する理由: ルーパーを新しい Handler に渡すため
コードで多くの例を目にすると、次のことがわかります。
次の場所でも見つけることができます。
を作成するHandlerThread
目的は 1 つだけです: それLooper
を newに渡すためHandler
です。HandlerThread
を拡張して、そこですべてのコード ( methodA()
)を実行しないのはなぜですか? または Handler インスタンスを作成し、そこに呼び出します: