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

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

android - Android LooperとBlockingQueue?

BlockingQueueからタスクをプルする通常のスレッドを作成する代わりに、Android Looper機能を使用して「パイプラインスレッド」を作成する必要がある理由を誰かが説明できますか?表面的には、同じことを行うには2つの方法のように見えます。

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

android - LocationManager と Looper - スレッドごとに作成できる Looper は 1 つだけです

アプリに問題があります。特定の間隔で位置情報の更新を取得する必要があるため、基本的に GPS モジュールを適切に制御できる必要がありますが、これは Android OS では簡単ではありません。基本的に、5 分間隔で 2 分間 GPS をオンにする必要があります。タイミングが遅くなり、場所を 2 回取得できますが、実行時エラーでアプリがクラッシュします。スレッドごとに作成されるルーパーは 1 つだけです。タイミングはサービスクラスで行われ、うまく機能します。更新とすべてが削除され、私が抱えているこの問題だけです。

私はもともとこのエラーを抱えていました - 「Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません」というエラーを以下のコードで修正しましたが、今ではルーパーエラーが 1 つだけ発生します。

私のルーパースレッドは次のようになります(厳しくしないでください、私はAndroidに非常に慣れていません笑)

私が言ったように、私は新しいので、ハンドラーの使用方法がわかりません。ここStackOverflowの投稿からこのコードの一部を取得しましたが、別の方法で使用しましたが、機能しません。

本当に助けが必要です。ご回答ありがとうございます。

OK、解決策を見つけたようです。テストしてから、回答を投稿する前にさらに7時間待つ必要があります笑。閲覧と返信ありがとうございます。

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

android - RuntimeException: Looper.prepare() を呼び出していないスレッド内でハンドラーを作成できません

ASyncTask を含むコードを持っていますが、問題は、それを数回実行すると、次の例外でクラッシュすることです: RuntimeException: Only one Looper may be created per thread

しかし、私はこれを読みました: https://stackoverflow.com/a/7781280/869180そして、私は過去に同様のエラーがあり、それはUIのもの(私の場合はProgressDialog)に関連していたことを思い出しましたASyncTask。

そのため、ASyncTask からすべての UI を削除し、RuntimeException を回避するために Looper.prepare も削除しましたが、次のようになっていることがわかります。

コードは次のとおりです。

私は何かが欠けているか、何か悪いことをしていると確信していますが、どこにもそれを見つけることができません.

どうもありがとう

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

android - Android スレッディング - キューの実行可能ファイル

Android を使用して小さなゲームを作成しようとしていますが、スレッドに問題があります。ゲームのメインループはこの独自のスレッドで実行され、基本的に次のようなことを行います。

ここで、タッチ入力を NativeGameLib に渡したいと思います。UIスレッドでビューのonTouchEvent()を使用し、内部で実行可能ファイルを作成して、メインループスレッドで実行できるようにしました。

しかし、私は本当にそれを行う方法がわかりません。Handler と Looper クラスがあり、handler を使用して runable を messageQueue にポストし、Looper.loop() 関数を使用してキューを処理できることを確認しました。

私が理解している限り、 loop() 関数は新しいメッセージを際限なくチェックするため、スレッドをブロックします。では、どうすればそれを自分のスレッドと組み合わせることができますか。スレッドで次のようなことをしたい:

何か案は?ありがとう。

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

android - Android Looperスレッドは処理能力を使用しますか?

この質問は、おそらくJavaスレッドの一般的な世界にも当てはまります...

私はそのように使用するスレッドを持っています(これはrunメソッドにあります):

私の質問は、スレッドがハンドラーにプッシュされるのを待っている間にCPUを使用しているかどうかです。それとも本当に「眠っている」のでしょうか?

そのようなスレッドをいくつか持つと、システムがダウンする可能性がありますか?

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

android - AlertDialogを使用したLooper.prepare()

ゲーム内にタイムカウンターを入れたいのですが。時間が0の場合、時間切れであることをユーザーに通知し、前のアクティビティに戻るAlertDialogがあります。メソッドは次のとおりです(SurfaceViewを拡張するクラス内にあります)。

GameTimerクラスはスレッドです:

}

AlertDialogが表示されますが、アプリがクラッシュし、次のメッセージが表示されます。ビュー階層を作成した元のスレッドのみがビューにアクセスできます。しかし、これは作成したスレッドです...問題はどこにありますか?

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

java - 新しいスレッドを作成する - Android

GPS 座標をデータベースに送信するためのスレッドを作成できるように、ルーパーを実装しようとしています。私はJavaが初めてで、これはすべて本当に混乱していますが、助けてくれるかもしれません. 次のクラス メソッドは、ボタンが押されたときにメイン アクティビティによって呼び出されます。このメソッドは GPS 位置を検出し、それを別のクラスのメソッドに送信します。このメソッドは緯度と経度 (ユーザー ID と共に) をデータベースに送信します。アプリの速度が低下したりフリーズしたりする問題が時々発生するため、このプロセス用の新しいスレッドを作成する方法を実装する必要があるようです。何か案は。初心者なのでお手柔らかに。これが私のコードです:

もう 1 つの質問ですが、ルーパーをここに追加するか、実際に情報をデータベースに送信するクラスに追加しますか? HTTP Post を使用して、情報を MySQL データベースに追加する PHP プログラムに送信します。

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

android - UIスレッド内からLooper.prepare()を呼び出す必要がありますか?

アクティビティのメインスレッド内からHandlerオブジェクトを実装する場合、事前にLooper.prepare()を呼び出す必要がありますか、それともアクティビティに独自の内部ルーパーがすでにありますか?サービス内からハンドラーインスタンスをインスタンス化する場合も同じことが言えますか?

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

android - サービス スレッドでの LocationListener の実装

バックグラウンド サービスで現在地の更新を実行しようとしています。サービスは、ソケット通信など、すでに他の多くのことを行っている独自のワーカースレッドを実行しています。ロケーションの更新も処理したいのですが、これはアクティビティでしか機能しないようです。私が読む限り、これはワーカースレッドでメッセージループが欠落していることが原因です。Looper.prepare()どこかで使用する必要があると思いますが、場所のリクエストを処理するためだけに別のスレッドが必要になるのでしょうか? エミュレーターを地理修正イベントに応答させることができないようです。何か間違ったことをしているに違いありません。

以下は、関連のない部分をすべて取り除いたサービス コードです。

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

looper - ループ内の変数の各ケースに一意の値を割り当てる

変数名の件名があります。一意の被験者ごとに、240 の応答遅延が記録されています。その実験条件に応じて、被験者間で相殺されます。ここで、サブジェクト ID (変数名のサブジェクト) を読み取りたいと思います。それらが偶数の場合は順序を 1 に割り当てる必要があり、サブジェクト ID が奇数の場合は変数の順序を 2 に割り当てる必要があります。この割り当ては、行ごとに行う必要があります (つまり、被験者ごとに 240)

私はifループを使用しました:私が得るエラーは....条件がlength > 1あり、最初の要素のみが使用されます。次のようにifelseも試しました:

出力は生成されますが、変数の順序で記録/保存されません。これを実現するのを手伝ってください。