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

0 投票する
4 に答える
3972 参照

android - 複数のプロセスにわたる Otto/EventBus

OttoまたはEventBuspostを使用して、あるプロセス (たとえばマニフェスト属性SyncAdapterを持つ内部) でイベントを発生さandroid:process=":sync"せ、別のプロセス (通常のアプリ UI 内) で受け取ることは可能ですか?

私はそれを知ってIntentおり、BroadcastReceiver複数のプロセスにわたる通信には問題なく機能しますが、Otto/EventBus でシンプルさと柔軟性を実現したいと考えています。

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

java - Dagger グラフから Qualifier で注釈が付けられたオブジェクトを取得する

グラフ内のシングルトン オブジェクトに Qualifier の注釈が付けられていない限り、次のように呼び出すことができます。

このオブジェクトがモジュール定義で修飾子で注釈されている場合、IllegalStateException がスローされます。

グラフからそのオブジェクトを取得するより良い方法はありますか?

一連のグラフがあります (アカウントごとに 1 つのグラフ)。アカウント グラフごとに個別のバスと、1 つのアプリ スコープのバス (異なる修飾子で注釈が付けられます)。GCM 同期要求メッセージを受信したら、正しいグラフからバスを取得して同期要求を渡す必要があります。

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

android - フラグメントからデータにアクセスできるようにする

メインアクティビティでデータを取得し、利用可能になるとすぐにすべてのフラグメントにイベントを送信するアプリがあります。したがって、最初の開始では次のようになります。

アプリの起動 (フラグメントはバックグラウンドで初期化されています) -> フィードのダウンロード -> フラグメントに送信された通知 -> フラグメントは UI を初期化します

これまでのところすべて順調です。しかし、アプリを再開するとどうなりますか。データは引き続きキャッシュされるため、アプリの再開時にすぐにイベントを送信します。そのため、フラグメントがイベントを受信する準備ができていない可能性があります - >フラグメント UI の更新はありません! または、イベントがトリガーされ、フラグメントで受信されますが、フラグメントは UI の更新の準備ができていません。これは、レイアウトがまだ膨張していないためです -> NullpointerException または、フラグメントはイベントを受信しますが、アクティビティにアタッチされていません - > 別の例外。単一の問題に対処する方法はありますが、全体として、アーキテクチャが非常に複雑になっています。

どういうわけか、私は多くのことを試しました (Otto バスで遊んでいます) が、どういうわけか、アプリ内のすべてのアクティビティとフラグメントで中央データソースを利用できるようにするために機能するアーキテクチャを見つけることができません。

バンドルを使用したくない場合、どのようにフラグメントにデータを提供しますか?

0 投票する
0 に答える
131 参照

android - Otto で特定のイベントへの応答を取得する

画像をアップロードし、画像 ID を取得し、その ID を投稿に添付して、サーバー上に投稿を作成する 2 段階のプロセスがあります。私はこのボルトのナットを処理するために Otto、Tape、および Retrofit を使用していますが、そのほとんどは既にうまくいっています。2 つのレスポンス リスナーで同時に画像アップロード イベントを取得するため、一度に 2 つの投稿を作成しようとすると、将来的に問題が発生することが予想されます。

特に同じタイプのイベントである場合に、どのリスナーがどのイベントにリストされているかを区別するための頼りになるソリューションはありますか?

ランダムな UUID を生成し、それをイベントと共に渡し、それを使用して特定のリクエストへの応答を識別する必要がありますか?

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

android - otto イベントを介して更新されたリスト要素を Mortar の画面に配信する

mortar-sampleに基づいてアイテムのリストを表示する単純なアプリケーションにMortarを使用しようとしています。

Retrofit/Gsonを使用してこれらのアイテムのメタデータをフェッチし、Otto を使用してアイテムがダウンロードされたらビューに更新を配信します。オブジェクトの作成にも Dagger を使用しています。

リスト内のアイテムを表示するために実装するクラスと、実装するItemListクラスがあります。ListViewItemListScreenmortar.Blueprint

アダプタ アイテムを更新するサブスクライブ メソッドを配置するのに最適な場所はどこですか? 現在、私はそれを下に置いていItemListScreen.Presenterますが、サブスクライブメソッドは決して呼び出されません!!

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

android - Android Annotations で Otto イベントバスを使用する方法

Square のAndroid AnnotationsOtto Bus Eventを使用するアプリを開発中です

これら 2 つのライブラリを統合するために、こちらのリンクをたどりました。また、Otto 2.0-wipそこからではなく、そこで提案されているライブラリを使用しましたOtto Git

これは私が実装を行う方法です:

バス用のシングルトン クラスを作成しました。

イベントでmy Fragment Class必要な場所で、このクラスのオブジェクトを宣言します。subscribe

サーバー通信からmy communicator class取得した時点からバスにイベントをポストします。callbackこれはpost event、このクラス内でバスに移動する方法です。

そして、これは私のChangeUserDetailsEventクラスです:

問題: 私の問題は、バス イベントでサブスクライブされているメソッドがonChangeUserDetailsEvent呼び出されず、この問題を修正するためにデバッグする方法さえ知らないことです。

FragmentAnnotation を使用しないバス イベントと、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 です:

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

java - スレッド間の通信に Otto を使用: 問題が発生する可能性はありますか?

私は最新の Android プロジェクトで試してみましたOttoが、オブジェクト間の通信が大幅に簡素化されました。ただし、スレッド間の通信に隠れた問題があるかどうかはわかりません。

バスがどこからでもアクセスできるように、SingletonBusを使用して を作成しました。enum

次にEvent、操作の結果を格納できる を作成しました (まだ何もサブクラス化していませんが、操作ごとにイベントを作成していますが、必要に応じて面倒になったときにリファクタリングを試みます)。

そして、このイベントを作成して投稿しました:

キーペアが作成されたときに結果を取得するイベントをサブスクライブしました。

私の質問は、それは機能しているようですが、ThreadEnforcer.ANYスレッド間の通信に Otto を使用することで隠れたエラーが発生する可能性はありますか? このアプローチに問題はありますか?