ハンドラまたはリスナ。イベントの通知にはどんな効果がありますか?より速く、より効率的なものは何ですか?ハンドラまたはリスナ。何が良いですか?
12
A
答えて
3
リスナータイプのようなものはありません。コールバックインターフェイスの命名規則です。したがって、同じスレッドでイベントを同期して処理したい場合にのみ使用します。
HandlerはAndroidクラスですが、メッセージやスレッドを処理する必要のあるスレッド(例:UIスレッド)にイベント(「ダウンロード完了」など)を渡すためにハンドルやハンドラを使用します。
7
これは良い質問です。
私は、Web通信に専用のハンドラを使用しています私のアプリで実行されているAndroidのバックグラウンドサービスを持っている
ハンドラを使用するためのシナリオ - 私は、ハンドラが要求をキューに入れ、それらを実行するので、このルートを行くことにしました1つずつ順番に並べ替えています。
たとえば、インスタントメッセンジャーアプリでは、チャットのシーケンスを維持することが望ましい場合があります。
コールバックを使用するシナリオマイバックグラウンドサービスはまた、(別のスレッドで)ハードウェアから読み込むクラスを使用
。いつでもデータが入る可能性があり、すぐに処理する必要があります。そのクラスでは、リスナー/コールバック・インターフェースを実装しました。
私の唯一の質問は、ハンドラのサイズに関するエチケットがあるかどうかです。 私は約50のユニークなメッセージを持っている:
- 発信方向のWeb要求は、約25のメッセージ(各メッセージは、Webサーバー上の別のAPIである)
- 各APIで構成され、したがって、他の25の着信ウェブがあります、応答を返す 応答
ハンドラは、サービスのコードの約60%を必要とします。これは、スイッチ(case {})構造(コードはほぼ1000行)が非常に大きくなることを想像してください。大きすぎる?それをどうやって分割するのですか?
関連する問題
- 1. Javascriptリスナ、ハンドラ、Ajax
- 2. インスタントメッセンジャーのTCPまたはUDPは何が良いですか?
- 3. java.util.logging logging.propertiesファイルで、 "ハンドラ"と "ハンドラ"の違いは何ですか?
- 4. 何が良いですか?クエリ(sql)またはhash_equals
- 5. 何が良いですか?ループ内のnotifyDataSetChangedまたはnotifyItemChanged?
- 6. 何が良いですか? MyPojo.getList()。add(Object)またはMyPojo.add()?
- 7. 何が良いですか:WHERE n = 0またはWHERE n!= 1
- 8. 何が良いですか?ファイルシステムのクエリまたはデータベースのクエリ?
- 9. 何が良いですか:int.TryParseまたはtry {int.Parse()} catch
- 10. 何が良いですか?静的メソッドまたはインスタンスメソッド
- 11. 何が良いですか? (pxまたは%)
- 12. Subject.asObservableとは何が良いですか?
- 13. 何が良いですか?javascript:functionName()またはfunctionName()だけですか?
- 14. 何が良いですか:データかattr?
- 15. 何が良いですか?ストリーミングとアップロードのためのAmazon EBSまたはS3
- 16. Subqueriersのために - 何が良いですか? HQLまたはCriteria -DetachedCriteria
- 17. 何が良いですか:インタフェースまたは公開/保護された状態で遊んでいますか?
- 18. フォームスタイリング、何が良いですか
- 19. 'on quit'ハンドラとは何ですか?
- 20. goで書かれた良いCMSとは何ですか?
- 21. コレクションのAssertJテスト:何が良いですか:「抽出」またはJava8 forEach
- 22. オーディオ/ビデオ録画とP2P用JavaまたはActionscript、何が良いですか?
- 23. 良いJavaScriptプラグインカラーピッカーは何ですか?
- 24. 良いJavaメディアライブラリとは何ですか?
- 25. 良いリジッドボディダイナミクスのリファレンスは何ですか?
- 26. より良いアプローチは何ですか
- 27. 良いwiki/cmsは何ですか?
- 28. 良いフリーターミナルマルチプレクサとは何ですか?
- 29. 良いC#コンパイラコンパイラ/パーサジェネレータは何ですか?
- 30. 良いRailsロギングソリューションとは何ですか?
したがって、単純なスレッドアプリケーションでは、Listenerが優れたソリューションです。右? – user479211
それは異なります。あなたのシンプルなアプリケーションは単一のスレッドを持つかもしれませんが、そのスレッドはUIを応答し続ける必要があります。これは、長い時間がかかるものでスレッドをブロックしないことによってのみ行うことができます。だから、あなたのイベント処理が小さくて簡単なものを含んでいる限り、コールバック(リスナー)を使ってください。大量の作業や待機が必要な場合は、別のスレッドを使用するか、Runnableに分割します。ハンドラを使用して、単一のUIスレッドでqueueすることができます。 –