問題タブ [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 - Otto の使用時にサブスクライバーがクビにならない
私は Android で Otto を試していますが、フラグメントからアクティビティにメッセージを送り返そうとしています。私のコードの基本は次のとおりです。
マイ バス プロバイダー:
私のアクティビティには次のコードがあります:
そして、これらは私のフラグメントからの重要なコードです:
エラーは発生しません。しかし、フラグメントからボタンをクリックすると、イベント onButtonChoicePicked が呼び出されません。
私は何か間違ったことをしていますか?Otto の仕組みを誤解していますか? それが機能しないのは、ButterKnife と Otto の奇妙な組み合わせですか?
android - 長時間実行タスクのアクティビティ
ユーザーによって呼び出されるか、アラームによってスケジュールされた、長時間実行されるタスクを実行するAndroidアプリを開発しています。
Activity - > Service - > AsyncTask 形式の呼び出しで設計しました。
Otto ライブラリを使用して、UI の更新を AsyncTask からアクティビティに直接もたらします。
2 つの質問があります
。1 Otto を使用して AsyncTask -> Service から、次に Service -> Activity からの通信を行う必要がある理由はありますか。多くのアプリがこのパターンを使用しているのを見てきました。
2 サービスをフォアグラウンドで実行する必要があるのはいつですか? メモリ不足によって強制終了されないという議論は悪用される可能性があります。意識的に決めたい。アラームによってキックされたときではなく、ユーザーが手動で呼び出したときにフォアグラウンドで実行する必要があると思います。
android - FragmentDialog でイベントの購読を使用する
otto ライブラリを使用して、イベントのサブスクライブに FragmentDialog を使用しています。
FragmentDialog を OnResume イベントに登録し、onPause メソッドで登録解除します。
次に、アクティビティでイベントを投稿します
しかし、私の FragmentDialog はこのイベントを処理しません。
android - Otto vs LocalBroadcast:
私は、square が Android コミュニティに行ったオープン ソースの貢献の大ファンであり、彼らの最新の貢献 Otto (イベント バス) を調べていました。
さらに掘り下げてみると、Otto はリフレクションを使用しており、順序付けされたブロードキャスト (消費されていないメッセージが、同じタイプのイベントをリッスンしているあるレシーバーから次のレシーバーに渡されるパターン) がないことがわかります。
AndroidLocalBroadcastManager
の v4 サポート ライブラリには (LBM) があり、これは同じ目的を果たしますが、よりかさばり、渡されるオブジェクトにより多くの制限があります。しかし、明るい面では、順序付けされたブロードキャストをサポートしており、通常のブロードキャストに似ています.
Otto と LBM はどちらも同じプロセス空間内にあるため、速度に関してはどちらも同じだと思います。私が見ることができる唯一の本当の違いは、Otto を使用するとカスタム イベントを定義でき、 Objects をシリアライズ/パーセルする必要がないことです。
したがって、私の本当の質問は、LBM が同じことを行う場合、いつ Otto を使用するかということです。
参考文献:
http://nick.perfectedz.com/otto-event-system/
インテントまたはイベント バスを使用して同じアプリ内で通信する
https://plus.google.com/107049228697365395345/posts/6j4ANWngCUY
android - onDestroy でリスナーの登録を解除する - 害は何ですか / 漏れる可能性はありますか?
onDestroy
リスナーの登録を解除するまで待つことに潜在的な害があるかどうかを理解しようとしています。特にイベントバス (otto) からのサブスクライブ解除について言及していますが、その答えはほとんどのlistener pattern
実装 ( SharedPreferenceListener
、LocationListener
、static
参照など) に当てはまると思います。
「onDestroy が呼び出されることが保証されていない」というフレーズを引用している、この問題に対する他のいくつかの 回答を見てきました。完全なonDestroy
ドキュメントテキストは実際には次のように書かれています。
注: このメソッドがデータを保存する場所として呼び出されるとは考えないでください。たとえば、アクティビティがコンテンツ プロバイダのデータを編集している場合、それらの編集は、ここではなく、onPause() または onSaveInstanceState(Bundle) でコミットする必要があります。このメソッドは通常、アクティビティに関連付けられているスレッドなどのリソースを解放するために実装されます。これにより、アプリケーションの残りの部分がまだ実行されている間に、破棄されたアクティビティがそのようなリソースを残さないようにすることができます。システムがこのメソッド (または他のメソッド) を呼び出さずにアクティビティのホスティング プロセスを単純に強制終了する状況があるため、プロセスがなくなった後も残り続けることを意図したことを行うために使用しないでください。
これは、アプリケーション プロセスが強制終了される前に呼び出されない可能性があるため (ライフサイクル図が示すように)、データの保存onDestroy
には使用しないことを意味すると理解しています。
簡単に言えば、 onDestroy が呼び出されないために、リスナーとして登録されたアクティビティがリークする可能性がある状況はありますか?
dagger - Otto と Dagger を使用してワーカー プロセスを作成するには?
特定のイベントが発生したときに何らかの作業を行いたい。
Android SDK を使用してこの問題を解決するには、ジョブを実行する IntentService を開始する BroadcastReceiver を作成します。
Android クラスを使用する代わりに、通常の Java クラスを使用して同じことを行いたいと考えています。
Otto と Dagger を使用して同じ問題を解決するにはどうすればよいですか?
android - オリエンテーションに関するオットーとボレー
Volley と Otto の両方をプロジェクトに統合して、すべてのサービス コールを処理すると同時に、向きの変更を検討しています。Otto を使用することで、オリエンテーションの変更時にバスを登録解除して再登録し、Volley が応答を返すと、結果をアクティビティにポストバックできます。これは完全に機能します。しかし、まだ処理していないギャップがあると思います。つまり、バスを一時停止して登録解除し、アクティビティがまだ破棄されている間にボレーからの応答が返された場合、ボレーは応答を投稿しますが、アクティビティはそれを取得します)、その後アクティビティが再開され、バスが再度登録され、ブロードキャストが既に投稿されているため、応答を受信しません。
これを解決する方法はありますか?私の最初の考えは、Android スティッキー ブロードキャストの仕組みのようなものを実装することです。他のより良いアイデアや考えはありますか?
java - イベント バスを効果的に使用するにはどうすればよいですか?
現在、Android 学習プロジェクトのいくつかのオプションを検討しています。Rails api (学習プロジェクトでもあります) と通信しようとしています。
いくつかの調査を行った後、レトロフィットとオットーを使用するスキームに落ち着いたと思います。
私が行き着くのはこれです。Rails サーバーを呼び出したい場合 (この場合はサインアップを行うため)、アクティビティでこれを行います。
そして同じ活動で私はこれを持っています。
ここでの問題は、現状では、すべての api 要求タイプとそれに対応する応答タイプが一意のイベント タイプになり、独自のクラスが必要になることです。これは多くのボイラー プレート タイプのコードのように見えます。
たとえば、サインインとサインアウトを処理するには、次の 2 つのクラスが必要です。
そして、ほとんどのイベント クラスはほぼ同じになると思います。
API 呼び出し用に 2 つのイベント (リクエスト用と応答用に 1 つ) が必要だと考えていますが、API 応答イベントを受信する各メソッドは、それが目的の要求に対する応答であるかどうかを確認する必要があります。
このオプションは、次のような意味になります。
次に、次のような応答を処理します。
多分ジェネリックを使用する方法はありますか?
このようにグループ化できる一連のイベントがある場合に、イベントバスを効果的に使用する方法を誰かが説明できますか?