問題タブ [greenrobot-eventbus]

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 投票する
1 に答える
1789 参照

android - ViewPager で EventBus を使用するときに混合データを取得する

http 要求が正常に行われたときに、結果をフラグメントに投稿するためにEventBusを使用しています。これは、1 つのサブスクライバーと 1 つのパブリッシャーの関係がある場合にうまく機能します。

ただし、私のアプリケーションでは、ViewPagerタブ付きを使用する画面があります。また、ページは非常に似ているため、各タブに対応する異なるパラメーターを持つ同じフラグメントを使用して、データをダウンロードします。

Fragment は次のように見えます。

そして、データが受信されたときに何が起こるかはすでに推測できます。

同じ署名を持つ多くのサブスクライバーが を待っているServerResponseため、応答は対応するタブに移動しませんが、同じ応答が受信され、すべてのフラグメントで表示され、データが混在します。

これを解決する方法はありますか?

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

android - EventBus、register および registerSticky メソッド

greenrobot EventBus ライブラリを使用して、Android アプリの 2 つのフラグメント間でデータを送信していますが、register(Object b)メソッドとregisterSticky(Object object)メソッドの違いは何ですか?

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

android - Intent サービス (Greenrobots Event Bus) でイベントを受信する方法

でスティッキー イベントを受信しようとしていIntentServiceます。でイベントをキャッチしようとしましたが、イベントをonEvent()受信onEventBackgroundThread()しません。アクティビティとフラグメントの間でイベントを送受信する方法を知っています。イベントをサービスに送信して機能させることができません。イベントバスはサービスにポストしますか? イベントの購読先はどこですか?onHandleIntent(Intent intent)サービスのコンストラクターでサブスクライブしようとしました。運がない。誰か助けてくれませんか?

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

android - Greenrobot Eventbus を介してバックグラウンド スレッドからメインに通信する

私のアプリでは、サーバーとの同期に SyncAdapter(AbstractThreadedSyncAdapter) を使用しています。基本的にバックグラウンド サービスでは、SQL テーブルにデータを挿入し、最後に UI に ListView を新しいデータで更新するように通知します。この件に関して、私は GreenRobot EventBus を使用しようとしましたが、成功しませんでした。

私のイベント

データベースにデータを挿入した後、次のように EventBus を呼び出します

ListView を表示する Fragment では、次のように EventBus を受信しようとします。

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

android - Android アプリでのテストと実際の使用のためのさまざまな sqlite データベース

免責事項 - Android アプリ内から sqlite db を作成および管理するために、GreenDAO ORM を使用しました。

私のAndroidアプリでは、単体テストを作成しているときに、テストが実際のデータベースを汚染しないようにするために、通常のデータベースとは異なる特定のデータベースを使用するようにアプリに切り替えるように指示したいと考えています。それに応じて、適切な関数を使用して新しいデータベースを作成し、このように切り替えました

私のアプリケーションでは、onCreate と setupDatabase は次のようになっています

FetchPersonsFromServer の onEvent は、人のリストを取得し、PersonDao を使用してデータベースに保存します。

ここで、デバイスからすべてのアプリ データを消去してテストを直接実行すると、期待どおりにテストに合格します。ただし、アプリを通常どおり実行してからテストを実行すると、assert ステートメントが失敗します。

サイズはデフォルトの db 値と同じです。

私はその理由を理解しようとして夢中になっています。setupDatabase のログ ステートメントは、正しいデータベース名、つまり freshdbinstall-db が表示されていることを示しています...

Androidでは2つのデータベースは許可されていませんか? 論理的に問題はないはずですか?それを許さないのはGreenDaoですか?何か基本的なミスをしているのでしょうか...

助けてください。


編集: greenDao android ORM ライブラリを使用して複数の *.db ファイルを作成していますか?

更新 1

adb shell、run-as cat /sdcard/debug/db、および adb pull を使用して、テストの失敗後にデフォルト データベースと新しいデータベースの両方を調べました。

新しいデータベースは期待どおりで、Person エントリはなく、デフォルトでは 10 エントリです。したがって、問題は assert/query 呼び出しにあると思います...何らかの理由でデフォルトのデータベースを使用しているようです...

これによると、セッションが更新されておらず、前のセッションがまだ使用されているようです

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

android - Android: eventBus と arrayadapter を使用してユーザーが一番下までスクロールしたときに ListView を更新する方法

最初、listView には 20 個のアイテムがあります。ユーザーが一番下までスクロールしたときに、次の 20 項目で listView を更新する必要があります。これを実現するために ArrayAdapter を使用しています。listView の項目は、(AsyncTask ではなく) EventBus を使用して、startIndex と limit をパラメーターとして受け取る REST API から取得されます。

stackOverflow で同様の問題を見つけましたが、すべて AsyncTask を使用しています。私は AsyncTask を使用したくなく、EventBus を使用して実現したいと考えています。