問題タブ [android-handler]

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 に答える
5739 参照

android - Handler.sendMessageDelayed(msg, delay) が正しく動作しない

ロード中に表示されるスプラッシュスクリーンを定義しました。ただし、インターネット接続によっては、読み込みに 600 ミリ秒しかかからないこともあれば、5000 ミリ秒かかることもあります。そのため、ユーザーが画面のちらつきにイライラしないように、スプラッシュスクリーンが少なくとも 3000 ミリ秒表示されるように定義しました。

スプラッシュスクリーンの開始を次のように定義します。

LoadingThread で、ネットワークをチェックし、インターネットからデータをロードします。

ロードが完了するとすぐに、MainActivity で定義されたハンドラーにメッセージを送信します。

LoadingThreads の一部のコード行は、runOnUIThread() によって呼び出されます。残念ながら、時間 < SPLASH_MIN_TIME の場合、メッセージは遅延せず、即座に送信されます。sendMessageDelayed() では、これは当てはまらないと思います。理由を知っている人はいますか?sysout は、遅延時間が正しく計算されていることを示しています。ありがとう!

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

android - Android タイマー ハンドラ

私はこのコードを使用しています:

実行すると、logcat で次の例外が発生します。

09-06 21:39:39.701: エラー/AndroidRuntime(1433): java.lang.RuntimeException: Looper.prepare() を呼び出していないスレッド内でハンドラを作成できません

0 投票する
7 に答える
109850 参照

android - handler.postdelayedプロセスをキャンセルする

私はhandler.postDelayed()、アプリの次のステージが実行される前に待機期間を作成するために使用しています。待機期間中、プログレスバーとキャンセルボタンのあるダイアログを表示しています。

私の問題は、時間が経過する前にpostDelayedタスクをキャンセルする方法が見つからないことです。

0 投票する
4 に答える
23480 参照

android - ハンドラ、MessageQueue、Looper はすべて UI スレッドで実行されますか?

私はスレッド化に頭を悩ませようとしていますが、 を使用してHandlerにメッセージ/ランナブルをポストしMessageQueue、それが によって取得され、処理Looperのために に送り返されることを知っていHandlerます。

Handlerアクティビティでに投稿した場合、 ActivityHandlerMessageQueueおよびLooperすべてが UI スレッドで実行されていますか? そうでない場合、誰かがこれがどのようにまとめられたのか説明してもらえますか? :)

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

android - AlarmManager と Handler Android を使用するさまざまな状況

AlarmManager と Handler を使用するさまざまな状況について、例を挙げて説明してもらえますか。これら2つを交互に使用することの欠点はありますか?

ありがとう。

0 投票する
6 に答える
126026 参照

java - ハンドラーからすべてのコールバックを削除するにはどうすればよいですか?

メインアクティビティによって呼び出されたサブアクティビティのハンドラーがあります。このハンドラーは、一部のRunnableのサブクラスで使用されており、管理できません。さて、イベントでは、アクティビティを終了する前にそれらを削除する必要があります(どういうわけか私は呼び出しましたが、それでも何度も呼び出します)。ハンドラーからすべてのコールバックを削除する方法はありますか?postDelayonStopfinish()

0 投票する
4 に答える
20274 参照

android - Androidコードで時間の前にハンドラーをキャンセルするにはどうすればよいですか?

サービスが完了していない場合にサービスをシャットダウンするために、1分の遅延タイマーを作成します。このように見えます:

onCreate()内

この1分前に仕事が完了した場合、この遅れたものをキャンセルしたいのですが、方法がわかりません。

0 投票する
13 に答える
145271 参照

android - ハンドラーvsAsyncTaskvsスレッド

とAndroidの違いについて少し混乱しましたHandlers。私はここStackOverflowでかなりの数のブログと質問を読みました。AsyncTaskThreads

HandlerUIとの通信を提供するバックグラウンドスレッドです。たとえば、プログレスバーの更新は、を介して実行する必要がありますHandler。ハンドラーを使用すると、の利点がありMessagingQueuesます。したがって、メッセージをスケジュールしたり、複数のUI要素を更新したり、タスクを繰り返したりする場合に役立ちます。

AsyncTask似ていますが、実際にはを利用しますHandlerが、UIスレッドでは実行されないため、データのフェッチ、たとえばWebサービスのフェッチに適しています。後でUIを操作できます。

Threadただし、UIと対話できず、より「基本的な」スレッドを提供すると、のすべての抽象化を見逃してしまいますAsyncTask

ただし、ソケット接続を稼働させたいのですが。これはハンドラーまたはスレッドで実行する必要がありAsyncTaskますか?UIの操作はまったく必要ありません。使用するパフォーマンスに違いはありますか?

その間、ドキュメントは大幅に改善されました。

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

java - このスレッド runnable は、完了すると最後にどうなりますか?

サーバーからいくつかの画像をダウンロードするこのスレッドがあります。画像をダウンロードしたら、ハンドラーを呼び出して UI の更新を続けます。したがって、スレッドの stop() は非推奨であるため、使用できません。ここで 2 つの質問があります。

  1. 最終的にこのスレッドはどうなりますか? (ハンドラー メソッドを呼び出した後、スレッドに何が起こるかを意味します)。
  2. または、stop() を使用せずにこのスレッドを停止するにはどうすればよいですか?

これが私のコードです。

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

android - 一部の電話では NullPointerException が発生し、他の電話では発生しない (同じ API レベル)

一部の電話 (すべて 2.3.x) で NullPointerException を取得している Android アプリがありますが、私の電話 (2.3.x) またはシミュレーターでは取得していません。

特定の例外は、それが私のコード内で発生していることを示しているようには見えないので、同じ API の一部のバージョンが正しくないという呼び出しを行っていると思いますか? どうすればいいのかわからない。

logcat のエラー ログは次のとおりです。

デバッガーからのスタック トレースは次のとおりです。

アクティビティが開始されるとすぐにエラーが発生します。デバッグ情報はコードのどこにも示されていませんが、何かが原因であると推測onCreate()しているのでonCreate()、問題のアクティビティは次のとおりです。

進行状況ダイアログが表示されず、実行した場合に実行した作業をログに記録するため、最後に作成する新しいスレッド内で実行する作業を実際に実行していないことを私は知っています携帯電話またはシミュレーターで実行すると実行されます)。

私はAndroidに少し慣れていないので、何が原因なのか、同じバージョンのAndroid APIが必要な場合でも、一部のデバイスで発生し、他のデバイスでは発生しない理由がわかりません。誰かが以前にこのようなものを見たことがある場合、または何が原因であるかについて何らかの考えがある場合は、どこを見ればよいかについてのいくつかの指針をいただければ幸いです.