問題タブ [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 - サービスを適切なアクティビティ インスタンスにバインドするにはどうすればよいですか?
さまざまな理由でアプリを正しく動作させることができません。
設計の概要: 私が目指しているのは、2 つのボタン (接続、切断) と、接続から受信したデータを表示するテキストビューを持つアクティビティです。私は WebSocket 接続を処理する "MySocket" サービス (Gottox の Java 実装) を作成しました。このサービスは、tit がサーバーから何かを受け取るたびにアクティビティにメッセージを投稿し、アクティビティはこのデータをテキストビューに追加します。サービスは、アクティビティから接続/切断プロンプトを受信し、アクティビティにメッセージを渡すことができる必要があります。MySocket もフォアグラウンド サービスとして実行する必要があるため、接続が無期限に維持され、ユーザーにはスティッキー通知が提供されます。
私はさまざまな場所でこれに大きな問題を抱えています。最初に、元のアクティビティがまだ更新されている間に、アクティビティの別のインスタンスを開始できることに気付きました。android:launchMode="singleInstance">
マニフェストで指定することでこれを修正しました。私が抱えていた問題は、アクティビティが破棄されて新しいアクティビティが作成されたとき、サービスは更新を投稿し続けましたが、フォーカスされたアクティビティはそれらを受信していませんでした。元のアクティビティが破棄され、サービス ハンドラーが更新されていない場合、アクティビティが破棄されると null ポインター例外がスローされますが、アプリケーションは実行され続けます。unbindService(mConnection)
次に、onDestroy メソッドで実行しようとしましたが、 java.lang.IllegalArgumentException: Service not registered:
The service is messages somethingがスローされました。これは焦点を絞った活動であるべきですが、それを受け取っていないようです。フォアグラウンド サービスの実装が不十分であることが原因だと思われますが、まったく手がかりがありません。
問題の 2 つのクラスは LONG であるため、Logcat 行、グローバル、および無関係であると確信しているいくつかのメソッドを削除しました。アーキテクチャが恐ろしいことはわかっていますが、これは私が機能するのと同じくらい近いです。コードが恐ろしすぎて読むことができない場合は、望ましい結果が得られれば、誰かが別の構造を提案してくれることを嬉しく思います。
活動クラス:
そして MySocket クラス:
android - Android 2.2 のアクション バー、ハンドラーが UI によって更新されない
アクションバーを抽象化して作成しようとしています(Android 2.2用)。したがって、私はそれを自分で書いています。何らかの理由で、ホームスクリーンでアクションバーを更新できません。それはハンドラーの問題ではないかもしれません。私が推測するよりも基本的なものです。
私のクラス ダイアグラムは、IBar (インターフェイス) ->implementedby-> ActionBarActivity (抽象クラス) ->extendedby-> HomeScreen のようなもので、class God
public static メソッドを使用します。
Only relevant pieces of code below
すべてのアクティビティで使用される ActionBarActivity。
HomeScreen は ActionBarActivity を拡張します
神クラス、公開静的。
アクションバーの画像ボタン
編集:これをデバッガーで実行しましたが、実行が --->>> 行に達しました。つまり、connection.setImageDrawable が呼び出されますが、何らかの理由で UI に表示されません。ここで本当に基本的なことが欠けています。
android - アンドロイドでRunnableを破壊する
次のコードを使用してURLにアクセスしています。
サーバーが起動していない場合、戻るボタンを押すとアプリが正しく閉じるまでに時間がかかることがわかりました。とにかく、終了手順をスピードアップできる方法はありますか?
android - URLから画像をダウンロードした後、どのようにインテントを開始できますか?
アプリケーション自体のユーザーからのアクションなしで、URL からの画像のダウンロードが完了した後、意図を開始する必要があります。
これは、最初に画像をダウンロードし、その後インテントを開始する私のアクティビティです。
MyAsnyc は問題なく、イメージを正しくダウンロードしますが、イメージのダウンロード中にインテントを開始するコードの 2 番目の部分でイメージが破損し、例外が発生します。
イメージの準備ができてダウンロードが完了したら、インテントを開始するにはどうすればよいですか?
android - Android Handler.getLooper() が null を返す
次の問題があります。ルーパーを使用したスレッドのこの実装があります。
}
そして、私は次のことをしたいと思います:
lm は LocationManager です。私のログとテストからlocationThread.handler.getLooper()
、ルーパーの代わりに null を返すと言えます。
なぜそれがヌルなのかわかりません。locationThread.isAlive()
trueを返したものを呼び出そうとしました。locationThread.handler;
また、null ではないことがわかっているものを取得しようとしました。私もたくさんのグーグルをしましたが、ドキュメンテーション以上のものは見つかりませんでした。
ご回答ありがとうございます。
android - Android ハンドラーはアプリを存続させますか?
実行したい定期的な処理があります。私は次のように設定しています:
いくつか質問があります。
- これらのハンドラーは、アプリがバックグラウンドにあるときに起動しますか? (そうでない場合、アプリがフォアグラウンドに戻ったときに期限切れのハンドラーが起動しますか?)
- これらのキューに入れられたメッセージは、アプリを「存続」させますか? つまり、すべてのアクティビティがなくなったとしても、これらのキューに入れられたメッセージが存在することで、Android がアプリケーションを強制終了できなくなるのでしょうか?
android - 複数のハンドラーの再利用可能なコード
1 つのアクティビティで 2 つの異なるハンドラーを使用する代わりの方法を提案してください。または、この方法で問題ないことを教えてください。
詳細: Microchips ADK Android スターター キットで使用するコードを開発中です。すべてがスムーズに実行されていますが、コードで 2 つの異なるハンドラーが実行されているという問題があります。動作しますが、推奨されていないことに気付きました。時間遅延を作成するために使用する最初のハンドラーで、post コマンドを使用して結果を起動します。2 番目のハンドラは、USB アクセサリ フレームワーク ファイルと通信するために提供された Microchip のサンプル コードで使用されます。私は、マイクロチップ社のコードを書き直すよりも、いじくり回すことだけを好みます。同様のコード:
android - trace.txt からの SoundManager.release ANR の修正
SoundPool.release() の呼び出し中に、次の ANR を取得しています。これは一貫した欠陥ではなく、ランダムに発生します。したがって、それを再現するにはちょっと時間がかかります。これを修正するには、AsyncTask または Thread の 2 つの方法があります。release は UIThread で実行されるべきではないため、ここで Handler を使用できるとは思いません。
スレッドを使用して修正しました
私はそれを正しくやっていますか?
android - ハンドラー(MessageQueue)とAsyncTask(SERIAL_EXECUTOR)のパフォーマンスの違いは何ですか?
アプリで非同期にデータを取得する方法はいくつかあります。1つはaHandler
で、もう1つはAsyncTask
です。今、私は両方を使用しました、そしてどちらがいくつかのタスクでより良く/より効率的に実行するか知りたいです。
これまでのところ、私は主AsyncTasks
にWebdataの取得に使用し、からへHandler
のデータの取得に使用しました。Services
Activities
Handler
Webdataに'sを使用すること、またはからUIを更新するためにAsyncTasksを使用することに利点があるかどうかを知りたいですServices
。大きな違いは何ですか?
android - AndroidSpinnerでの複数のAsyncTasksの問題
エラーが発生します。何が問題なのかはわかりますが、修正方法がわかりません。
私は4つのスピナーを持っています。すべてのスピナーは1つの非同期タスクに関連していました。簡単に言うと、spinner1で1つのアイテムを選択すると、spinner2に入力する2番目の非同期タスクを実行します(選択したアイテムをパラメーターとして2番目の非同期タスクに追加します)。このように続行します。
ただし、最初の非同期タスクが終了する前に、spinner2にデータを入力することはできません。この場合、エラーが発生します。それを修正する方法は?最初のタスクが終了し、2番目のタスクが機能するようにする方法は?
これがコードです。
最初のタスク
2番目のタスク
onCreate()
編集:Webサービスからデータを取得し、spinner1にデータを入力します。データ(spinner1で選択したアイテム)はどこで入手できますか?そして、spinner2にデータを入力する場所で2番目のタスクを実行しますか?