問題タブ [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.
android - Androidでタイマーを使用して10分ごとにGpsを追跡する
私は Android アプリケーションを開発しており、GPS を介して 10 分ごとに位置を追跡するサービスを使用しています。しかし、ロケーション リスナーをタイマー タスクに配置すると、例外がスローされます。
を呼び出していないスレッド内にコードを配置することはできません
looper.prepare()
。
誰かがこの問題について何か洞察を持っていますか?
android - ハンドラ、MessageQueue、Looper はすべて UI スレッドで実行されますか?
私はスレッド化に頭を悩ませようとしていますが、 を使用してHandler
にメッセージ/ランナブルをポストしMessageQueue
、それが によって取得され、処理Looper
のために に送り返されることを知っていHandler
ます。
Handler
アクティビティでに投稿した場合、 Activity
、Handler
、MessageQueue
およびLooper
すべてが UI スレッドで実行されていますか? そうでない場合、誰かがこれがどのようにまとめられたのか説明してもらえますか? :)
android - Looperの目的と使用方法は何ですか?
私はAndroidを初めて使用します。Looper
クラスの内容と使い方を知りたいです。Android Looperクラスのドキュメントを読みましたが、完全に理解できません。いろいろなところで見ましたが、その目的がわかりません。Looper
誰かが目的を定義し、可能であれば簡単な例を示すことによって私を助けることができますか?
android - Android AsyncTask [Looper.prepare()を呼び出していないスレッド内にハンドラーを作成できません]
AsyncTask
関数に基づいて画像のアップロードを作成しました。アップロードした後、でこのエラーが発生しonPostExecute()
ます。StackOverflowの回答をいくつか読みましたがRunnable
、別のソリューションを実装したにもかかわらず、エラーが何度も発生し続けました。
私のコード:
私のlogcat:
zaplの提案の後に編集:
android - Android : Looper.prepare() を呼び出していないスレッド内でハンドラを作成できない
私のアプリには、何かを行うときに進行状況ダイアログを表示するこのメソッドを持つサービス クラスがあります。
アプリの実行中に作業の進行状況ダイアログが表示されるようにしたいのですが、アプリを実行すると次のエラーが発生します。
呼び出されていないスレッド内にハンドラーを作成できませんLooper.prepare()
どうすれば修正できますか?
編集 :
java - HandlerThread.getLooper() が無期限にブロックする
HandlerThread を使用して、独自のスレッドで MediaPlayer を実行する方法を学習しようとしています。しかし、私は最初のステップで失敗しています。Java/Android のスレッドを理解するのに 2 日間苦労しましたが、本当に助けが必要です。(Java と Android の両方で数え切れないほどの例と javadoc ページを読みました)、非常にイライラしたり、愚かだと感じています。
以下の例では、getLooper() は無期限にブロックします。理由がわかりません。以下のコードを修正してこれを修正する方法を教えてください。
また、MediaPlayer のメソッドが (非同期で) 呼び出されるメッセージを送信する方法の例は非常に価値があり、おそらく 1 週間節約できます。
ありがとうございました
android - HandlerThread の NullPointerException
このバグは何時間も私を困惑させました。NullPointerExceptionを取得しています。問題は、このエラーが一貫していないことです。アプリを起動すると発生しますが、たまにしか発生しません。そのため、何が原因なのかわかりません。
エラー ログで冗長な質問をして申し訳ありませんが、別の質問方法が見つかりませんでした。
エラーログは次のとおりです。
そして、これが起こっているコードを以下に示します。
ご参考までに、エラー ログの 74 行目 (より具体的には、これは、次のコード行をat com.myproject.android.ImageDownloaderThread.queueImage(ImageDownloaderThread.java:74)
参照しています。.obtainMessage(MESSAGE_DOWNLOAD, pos, 0, url)
queueImage()
編集
Loopの回答の提案によると、呼び出されたときにmHandler
nullですqueueImage()
。では、呼び出しを実行する前mHandler
に初期化されることを保証するにはどうすればよいですか?onLooperPrepared()
queueImage()
java - 非アクティビティ クラスの静的メソッドで Toast を起動する
非アクティビティ クラスの静的メソッドでトースト メッセージを起動したいと考えています。私はそれについて多くのスレッドを読みましたが、私の状況はもう少し複雑です。特に:
サービスがあり、OnStartCommand で別のクラスの静的メソッドを一定間隔で呼び出します。この呼び出されたメソッドでは、特定のケースでトースト メッセージを表示したいと考えています。
また、アプリケーションを拡張するサポート クラスを作成しようとしました。このクラスには、必要なときに取得するアプリケーション コンテキストがありますが、何もする必要はありません。
これは、静的メソッド AllInterfacesActived を呼び出す Service クラスのメソッドです。
OracoloBrain クラス (非アクティビティ クラス) には、静的メソッド AllInterfacesActived があります。このメソッドに関するコードは省略しますが、Toast を表示したい場合があります。MyApplication.java という別のクラスを作成しようとしています。
したがって、このコンテキストを使用してトーストを起動しようとしましたが、何もしません。
android - 同じルーパーを異なるスレッドに関連付ける
私のアプリケーションでは、単一のキューで動作する複数のスレッドを作成したいと考えています。キューを作成するには、 を呼び出す必要があることがわかっていますLooper.prepare()
。
作成した他のすべてのスレッドをlooper
、最初のスレッドで作成したスレッドに関連付ける必要があります。これを実現するにはどうすればよいですか?