問題タブ [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.
android - 同じクラス内で Async Task と一緒に Handler を使用するのは正しいですか?
ご存知のように、Android 開発ガイド に「Location Aware」というダウンロード可能な優れたサンプルがあります。
このコードに書かれている Handler について質問があります。同じクラス内で Async Task と一緒に Handler を使用するのは正しいですか? このコードは Android 標準に従って正しく記述されていますか? (ところで、エラーが修正されれば、このプロジェクトは正常に動作します。)
非同期タスクのリファレンス: http://developer.android.com/reference/android/os/AsyncTask.html
android - Handler 内で DialogFragment を表示するにはどうすればよいですか?
ネットワーク通信スレッドで問題が発生した場合に、ユーザーにメッセージを表示したいと思います。
このため、ハンドラーからダイアログを表示する必要があります。
これは正しい方法ですか? ハンドラー クラス内で FragmentManager を取得する方法が見つからないためです。
android - アプリ内購入の問題
アプリ内購入を実装している最新のアプリに取り組んでいます。
オンラインで優れたチュートリアルを探したところ、Bundell のチュートリアルが見つかりました。
コードを何度も調べましたが、エラーが発生し続けます。次のようになります。
これは nullpointerException ですが、何が起こっているのかわかりません。このコードを使用して、アプリ内購入を行います。
ボタンがあり、クリックするとアクティビティが終了します。アクティビティを終了するたびに、このエラーが発生します....
onDestroy が呼び出されると、事態は悪化します。stopService() メソッドと関係があると思います。
そのメソッドは次のようになります。
みんなお願いします..ヒント/ポインター、または説明を教えてもらえますか?
編集
わかりました...完了しました... onDestroyを削除し、stopServiceをfinishメソッドの前にコピーしました...別のnullpointerexceptionを取得しています..ちょっと同じです:
android - フラグメント内のAndroidResources$ NotFoundException
スワイプビュー(2つのフラグメント)を使用してmusicplayerプロジェクトをビルドしました。1つのフラグメントにはスタートボタンがあり、スタートボタンをクリックすると、別のフラグメントに曲のメタデータ情報とシークバーが表示されます。私の問題は、曲の再生時に曲ごとに現在の時刻を取得することです。
フラグメントのコードは次のようになります。
このコードは正常に機能します。しかし、曲の現在の時刻(または曲の進行時刻)を表示したい場合は、後にコードsongDuration.setText(currentTime);
をrun()メソッドにseekBar.setProgress(currentTime);
入れて、次のエラーメッセージを受け取ります。
誰かが解決策のアイデアやアドバイスをしますか?事前にthx
編集1:
こんにちはみんな、これはエラーメッセージです。コードcurrentDuration.setText(currentTime);
を変更すると、エラーメッセージcurrentDuration.setText("" + currentTime);
もcurrentDuration.setText(Integer.toString(currentTime));
次のようになります。
currentDuration.setText(currentTime);
線が問題だとは思いません。ハンドラーなどを実装する必要がありますか?
編集2:
誰も考えませんか?:/
android - ウェイクロックをグローバルに取得し、handler.postDelayed() ブロックで定義された setResult() を取得する場合、onActivityResult() は呼び出されません。
画面がオンのときに実行されるコードがいくつかありますが、画面の電源をオフにすると、実行に問題が発生します(Wakelockをグローバルに取得した後でも)。ウェイクロックを取得してアクティビティを呼び出すサービスがあります-次のコードでExecuteScript:
ExecuteScript.java:
そして、私の ScriptActivity (Service を呼び出し、30 秒かかる操作を実行します)。ただし、私の場合、 onActivityResult() は呼び出されません。なぜこれが起こるのか分かりません。私を助けてください。
handler.postDelayed() ブロック内で setResult() を定義しました。私は次のようなコードを持っています:
ScriptActivity.java
更新:バインドされたサービスの使用も機能しませんでした。これに関するアイデアはありますか?
android - サービスで長時間実行される操作を実行します
サービスを備えたアプリケーションを構築しています。すべてのアプリケーションコンポーネントが同じUIプロセスで実行されることは知っていますが、少なくともマニフェストで指定します。したがって、ANRのメッセージを回避するには、3つの方法があります。
android:process = ":remote"のような別のプロセスで実行するようにマニフェストでサービスを指定しますが、バッテリーとCPU処理を大量に消費するため、これはお勧めできませんというStackOverflowの投稿を読みました。それらの投稿は信頼できる人々からのものなので、私は本当に尊敬しています。IntentServiceを使用します。それはおそらく良い方法です。ただし、アクティビティが表示されていなくても、サービスを実行する必要があります。サービスが必要なため、他のユーザーからの新しいメッセージがないかWebサービスをチェックし続け、通知を通じて通知します。IntentServiceを使用して可能でしょうか?それはエレガントな解決策です。
ローカルサービスを使用します。マニフェストファイルからandroid:process = ":remote"属性を削除するだけです。しかし、いくつかの...OnMainThreadExceptionエラーが発生します。つまり、これらの長時間実行される操作を実行したり、AsyncTaskを使用したりするには、特別なスレッドを作成する必要があります。
多分それをする別の方法があります。サービスで長時間実行操作を実行する方法を教えてください。本当に不可欠です。
ありがとう。
android - サービスからアクティビティ内のメソッドを呼び出す方法
一部の音声をリッスンするサービスがあります。音声が文字列と一致する場合、特定のメソッドがサービス オブジェクトで呼び出されます。
これは、アクティビティでサービスを開始する方法です。
このサービス メソッドから、アクティビティ オブジェクトにあるメソッドを呼び出すにはどうすればよいですか? アクティビティからサービスへのアクセスではなく、サービスからアクティビティへのアクセスが必要です。ハンドラーとブロードキャスターについては既に読みましたが、例を見つけたり理解したりできませんでした。何か案は?
android - アクティビティを破棄するときに、アプリケーションによって作成された HandlerThreads を手動で閉じる必要がありますか?
私のアプリは単一のActivity
. このアクティビティでは、HandlerThread
ソケット ブロック操作を行うためにループで実行される複数の を作成しています。
HandlerThread
現在、私はこれらのすべての人に終了メッセージを投稿していActivity.onDestroy()
ます.
アプリを開いて閉じて再起動すると、クラッシュすることがあります (多くの場合、実行されていないハンドラー スレッドにメッセージを投稿するためです)。
私の質問は次のとおりです。アプリを閉じるときの正しい終了方法は何ですか? HandlerThread
(これらのスレッドがソケット操作をブロックしている可能性があることに注意してください)。
編集: 詳細: onCreate で開始されるハンドラー スレッドのプールがあります (初めてアプリを起動するときは問題ありません)。
各ハンドラの実行可能なループは、
声明。
close メソッドは、保留中のすべてのメッセージとランナブルを削除し、メッセージをハンドラーに投稿して、ハンドラーにそのlooper.quit()
. このように、現在のハンドラー スレッドが IO 操作によってブロックされている場合、一度だけ終了すると、彼は quit() を実行します。
android - サービスからアクティビティへのメッセージの送信
サービスがあり、次のようにプライマリ アクティビティにメッセージを送信しようとしています。
Activity でこのメッセージ データを取得するにはどうすればよいですか?
android - ビューが表示されたらタイマー(ハンドラー)を作成し、ビューが消えたら停止します
私はかなり長い間iOSアプリを開発してきましたが、今はandroidに切り替えました。ビューが表示されたときにタイマーを開始し(Androidではハンドラーを使用する必要があります)(onResume)、ビューが消えたときにタイマーを無効にする(onPause)という要件があります。実行可能なハンドラーを作成することはできますが、停止することはできません。私のコードは次のとおりです。
さて、ビューが消えたときにこのハンドラスレッドを停止するにはどうすればよいですか?Androidでタイマーを実装する正しい方法ではない場合は、コメントしてください。