問題タブ [otto]
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.
java - Dagger グラフから Qualifier で注釈が付けられたオブジェクトを取得する
グラフ内のシングルトン オブジェクトに Qualifier の注釈が付けられていない限り、次のように呼び出すことができます。
このオブジェクトがモジュール定義で修飾子で注釈されている場合、IllegalStateException がスローされます。
グラフからそのオブジェクトを取得するより良い方法はありますか?
と
一連のグラフがあります (アカウントごとに 1 つのグラフ)。アカウント グラフごとに個別のバスと、1 つのアプリ スコープのバス (異なる修飾子で注釈が付けられます)。GCM 同期要求メッセージを受信したら、正しいグラフからバスを取得して同期要求を渡す必要があります。
android - フラグメントからデータにアクセスできるようにする
メインアクティビティでデータを取得し、利用可能になるとすぐにすべてのフラグメントにイベントを送信するアプリがあります。したがって、最初の開始では次のようになります。
アプリの起動 (フラグメントはバックグラウンドで初期化されています) -> フィードのダウンロード -> フラグメントに送信された通知 -> フラグメントは UI を初期化します
これまでのところすべて順調です。しかし、アプリを再開するとどうなりますか。データは引き続きキャッシュされるため、アプリの再開時にすぐにイベントを送信します。そのため、フラグメントがイベントを受信する準備ができていない可能性があります - >フラグメント UI の更新はありません! または、イベントがトリガーされ、フラグメントで受信されますが、フラグメントは UI の更新の準備ができていません。これは、レイアウトがまだ膨張していないためです -> NullpointerException または、フラグメントはイベントを受信しますが、アクティビティにアタッチされていません - > 別の例外。単一の問題に対処する方法はありますが、全体として、アーキテクチャが非常に複雑になっています。
どういうわけか、私は多くのことを試しました (Otto バスで遊んでいます) が、どういうわけか、アプリ内のすべてのアクティビティとフラグメントで中央データソースを利用できるようにするために機能するアーキテクチャを見つけることができません。
バンドルを使用したくない場合、どのようにフラグメントにデータを提供しますか?
android - Otto で特定のイベントへの応答を取得する
画像をアップロードし、画像 ID を取得し、その ID を投稿に添付して、サーバー上に投稿を作成する 2 段階のプロセスがあります。私はこのボルトのナットを処理するために Otto、Tape、および Retrofit を使用していますが、そのほとんどは既にうまくいっています。2 つのレスポンス リスナーで同時に画像アップロード イベントを取得するため、一度に 2 つの投稿を作成しようとすると、将来的に問題が発生することが予想されます。
特に同じタイプのイベントである場合に、どのリスナーがどのイベントにリストされているかを区別するための頼りになるソリューションはありますか?
ランダムな UUID を生成し、それをイベントと共に渡し、それを使用して特定のリクエストへの応答を識別する必要がありますか?
android - otto イベントを介して更新されたリスト要素を Mortar の画面に配信する
mortar-sampleに基づいてアイテムのリストを表示する単純なアプリケーションにMortarを使用しようとしています。
Retrofit/Gsonを使用してこれらのアイテムのメタデータをフェッチし、Otto を使用してアイテムがダウンロードされたらビューに更新を配信します。オブジェクトの作成にも Dagger を使用しています。
リスト内のアイテムを表示するために実装するクラスと、実装するItemList
クラスがあります。ListView
ItemListScreen
mortar.Blueprint
アダプタ アイテムを更新するサブスクライブ メソッドを配置するのに最適な場所はどこですか? 現在、私はそれを下に置いていItemListScreen.Presenter
ますが、サブスクライブメソッドは決して呼び出されません!!
android - Android Annotations で Otto イベントバスを使用する方法
Square のAndroid AnnotationsとOtto Bus Eventを使用するアプリを開発中です
これら 2 つのライブラリを統合するために、こちらのリンクをたどりました。また、Otto 2.0-wip
そこからではなく、そこで提案されているライブラリを使用しましたOtto Git
。
これは私が実装を行う方法です:
バス用のシングルトン クラスを作成しました。
イベントでmy Fragment Class
必要な場所で、このクラスのオブジェクトを宣言します。subscribe
サーバー通信からmy communicator class
取得した時点からバスにイベントをポストします。callback
これはpost event
、このクラス内でバスに移動する方法です。
そして、これは私のChangeUserDetailsEvent
クラスです:
問題:
私の問題は、バス イベントでサブスクライブされているメソッドがonChangeUserDetailsEvent
呼び出されず、この問題を修正するためにデバッグする方法さえ知らないことです。
Fragment
Annotation を使用しないバス イベントと、Annotation を使用しないBus
シングルトンで実装すると、バス イベントは完全に機能することに注意してください。これは、注釈を使用しない場合の Bus シングルトン クラスです。
ありがとう!
編集
androidannotations:3.2
からの変更に更新するときにも問題がありますgradle file
。
compile 'org.androidannotations:androidannotations:3.1'
apt 'org.androidannotations:androidannotations:3.1'
に:
compile 'org.androidannotations:androidannotations:3.2'
apt 'org.androidannotations:androidannotations:3.2'
.
バージョン 3.1 ではコンパイルはできますが、動作しませんotto event bus
。バージョン 3.2 ではエラーが発生します。これは、AA ライブラリに実装が必要な変更が加えられているか、バグがあることを意味します。どうすれば解決策を見つけることができますか?
これはエラーの 1 つです (デモ用): エラー:(27, 25) エラー: アクティビティであるクラスであるシンボル クラス UserAccountActivity_ が見つかりません。
これは私の androidannotations.log です:
java - スレッド間の通信に Otto を使用: 問題が発生する可能性はありますか?
私は最新の Android プロジェクトで試してみましたOtto
が、オブジェクト間の通信が大幅に簡素化されました。ただし、スレッド間の通信に隠れた問題があるかどうかはわかりません。
バスがどこからでもアクセスできるように、SingletonBus
を使用して を作成しました。enum
次にEvent
、操作の結果を格納できる を作成しました (まだ何もサブクラス化していませんが、操作ごとにイベントを作成していますが、必要に応じて面倒になったときにリファクタリングを試みます)。
そして、このイベントを作成して投稿しました:
キーペアが作成されたときに結果を取得するイベントをサブスクライブしました。
私の質問は、それは機能しているようですが、ThreadEnforcer.ANY
スレッド間の通信に Otto を使用することで隠れたエラーが発生する可能性はありますか? このアプローチに問題はありますか?