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

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

android-service - Android IPC メカニズムを使用するタイミング

Android で IPC を実行するには、コンテンツ プロバイダー、メッセージ、AIDL、非同期タスク、IntentService など、いくつかの方法があります。

それぞれが特定の問題を解決することを目指しているようです。

どちらを使用するかを決定する方法は?

他のサービスまたはアクティビティがこのサービスからデータを取得すると同時に、サービスをバックグラウンドで実行し続ける必要があります。

前もって感謝します!

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

android - ViewRootImpl$CalledFromWrongThreadException が正確でないのはなぜですか?

非 UI スレッドから(古い行から新しい行へ) TextView を行ごとに更新するスニペット:setText()

コードを実行すると、さまざまなスタック トレースでCalledFromWrongThreadExceptionが発生します (以下の「スタック トレース#1」「スタック トレース #2」を確認してください)。両方のバリアント (単純なループレスThreadから、または内部に Looper を持つHandlerThreadから View を更新) では、例外のスローは正確ではありません。ワーカー スレッドを介した各 UI の更新後にイベントが正確に発生しません。

次の呼び出しルーチン (同じ入力条件) でのシステムの動作が持続しない理由を考えている人はいますか?

スタックトレース #1 (頻度: 高; ほとんどの場合)

スタックトレース #2 (頻度: まれ; 1 回キャッチ)

:

  1. ビューが遅滞なく更新されたときに、「ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます」というエラーはありません。説明は問題を完全にはカバーしていません ( 「Stacktrace #2」のみ)。
  2. OS:アンドロイド6.0。
0 投票する
1 に答える
667 参照

android - HandlerThreads は Android OS によって自動的に殺されますか?

バックグラウンド作業を行うために使用するHandlerThreadinApplicationクラスがあるとします。Applicationこのスレッドを自分で停止する必要がありますか?それともインスタンスと共に OS によって強制終了されますか? 私のコードは次のようになります。

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

android - HandlerThread の handleMessage() が呼び出されない

HandlerThread と Handlers を使用しているときに奇妙な問題が発生しました (Handlers とは、android.os.handler を意味します)。Fragment から別の Handler Thread にメッセージを渡そうとしています。メッセージを処理するために handleMessage をセットアップしました。しかし、それは呼び出されません。start()を使用してスレッドを開始した後(ルーパーが準備された後)、ハンドラースレッドのルーパーを取得しました。また、ハンドラーがhasMessage()を使用してメッセージを取得したことも確認しました。すべて順調。私は混乱しています。親切に私を助けてください.私のコードは以下の通りです.

フラグメント コード:

ハンドラスレッド

0 投票する
3 に答える
717 参照

android - ハンドラー スレッド - NetworkOnMainThread 例外 (android.os.handler)

これは、上に投稿された質問の複製ではありません。HAndlerThread が newThread を開始し、NetworkOnMainThread 例外が発生するため、奇妙なエラーだと思います。通常の NetworkOnMainThread 例外を解決するのは、まったく新しい問題です。これをマーク解除してください。

こんにちは、まず私は HandlerThread を練習しています。Fragment を使用してハンドラ スレッドを開始し、スレッドにメッセージを送信しました。HandlerThread のハンドル メッセージ内で、ネットワーク呼び出しを使用して画像をダウンロードします。次に、MainThread のハンドラーを使用して、ダウンロードした画像を UI スレッドに投稿します。しかし、このアプリケーションを実行すると NetworkOnMainThread Exception が発生します。以下は Fragment と Handler Thread のコードです。

断片:

ハンドラー スレッド:

アクティビティの loadImage メソッド:

また、ログを使用して現在のスレッド (HandlerThread の handleMessage 内) を確認すると、メインにいるときにログ メッセージが表示されます。それはどのように可能ですか?私は何か間違ったことをしていますか?

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

android - 多くの HandlerThreads が生きていて、何もせず、ただ待っているのは悪いことですか?

私は自分の Android プロジェクトHandlerで全体と組み合わせて使用​​します。HandlerThread私はサービスでそれらのほとんどを使用します。そこでは、優先度の低い個々の HandlerThread に支えられた私の Handlers が で作成されonCreated()、 で停止されonDestroy()ます。

彼らの多くはずっと待っています。たとえば、5 分ごとに数秒間処理します。

合計で、私のアプリには約 20 のスレッドがあります (そのうちの半分は HandlerThreads です)。では、非常に多くのスレッドが開いていることはパフォーマンスの問題ですか? Javaでスレッドを待機させるのは悪いことですか? 私はそれが正しいはずだということを学びました。それが当てはまるかどうかを確認したいだけですHandlerThread

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

java - 1 つの目的のために HandlerThread を作成する理由: ルーパーを新しい Handler に渡すため

コードで多くの例を目にすると、次のことがわかります。

次の場所でも見つけることができます。

https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/OpenDownloadReceiver.java

https://github.com/CyanogenMod/android_packages_apps_Gallery3D/blob/8621799408a58f6b9da3492382ce929b3c93c7de/src/com/cooliris/picasa/PicasaService.java

を作成するHandlerThread目的は 1 つだけです: それLooperを newに渡すためHandlerです。HandlerThreadを拡張して、そこですべてのコード ( methodA())を実行しないのはなぜですか? または Handler インスタンスを作成し、そこに呼び出します: