問題タブ [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.
android - Dagger + Otto アーキテクチャ ガイダンス
私は、ある程度モジュール化されたアーキテクチャでアプリを開発しようとしています (誰も知らないが、誰もが通信できる)。例から始めます。
内部LoginFragment
:
はAuthenticator
このイベントをキャッチし、ポスト バックします。
Authenticator
Dagger を介して多くのものに依存します。
によって提供されますAuthModule
。
私Application
のクラス:
問題は、どこでインスタンス化 ( @Inject
) するAuthenticator
かです。どのクラスでも直接使用しません。AbsApplication
クラスのフィールドにすることはできますか?にダガーを使用する必要がありAuthenticator
ますか?Dagger
のモジュールを正しく使用していませんか?
@Inject Authenticator
の中に入れることができることはわかっていますLoginFragment
が、新しいパターンを模索しています。我慢してください。
java - WebViewClient.shouldOverrideUrlLoading の FragmentTransaction が IllegalStateException をスローする
競合状態と戦っているようですが、その原因を突き止めることはできません。以下のコードを実行すると、断続的に以下のスタック トレースが表示されます。
私が従わない Fragment ライフサイクルの明確なルールはありますか? イベントを処理するためにここでトランザクションを実行することを明示的に禁止するものについては明確ではありません。
を使用してWebViewClient
、ローカルの .html ドキュメント内でクリックされた外部 URL を検出しています。たとえば、非ローカル ホストを指す URL です。Otto'sEventBus
を使用して、これらのアクションを に投稿していActivity
ます。がこれらのイベントを受け取ったら、Activity
それらの外部 URL を別の で表示したいと思いますFragment
。FragmentTransaction.replace()
DefaultWebViewClient.java
FragmentActivity.java
LoadExternalUrlEvent.java
EventBus.java
スタックトレース
android - Interface-Hell と Eventbus-Confusion を回避するには?
私はAndroid用のアプリをいくつか開発していますが、常にコミュニケーションが必要な場所に来ます
- アクティビティへのフラグメント
- フラグメント化するアクティビティ
- フラグメントからフラグメントへ
- フラグメントへのサービス
- 等
Android のドキュメントでは、インターフェイスを使用して、たとえば Activity と Fragment の間で通信することを推奨しています。しかし、たとえば 4 つのフラグメントがある場合、アクティビティは 4 つのインターフェイスを実装する必要があります。私は私の意図ですよね?
だから私はオットーを試してみましたが、試してみる価値があります。ただし、バスのイベントを追跡しないと、非常に混乱する可能性があることがわかりました。
これらのアプローチを回避するための戦略を探しています。Google やその他の主要な開発者はどうですか?
android - サーバーと通信するための Android サービス
サーバーとの安定した接続を確立するには、サービスが必要です。
アクティビティとサービスは、双方向の通信を行う必要があります。
ここに私が知っているオプションがあります
- インテント サービスを使用する
- Service クラスを拡張 (別のプロセスで実行する) し、Messaging を使用して通信する
私の考え:
インテント サービスは優れており、独自のスレッドで実行されますが、タスクが完了すると停止します。私はそれをしたくありません。たとえば、何らかの理由で接続が中断された場合、サービスを終了するのではなく、再接続を試みる必要があります。
サービスクラスの拡張は理にかなっています。私は以前、サービスとの通信にメッセージングを使用するプロジェクトに取り組んでいました。ここでの問題は、プロジェクトが成長するにつれて、通信の管理が難しくなることです。
サービスが別のプロセスまたはスレッドで実行され、何らかの理由 (START_STICKY など) で終了した場合に再度開始する必要があるアプローチを探しています。
また、通信が簡単で、 OttoやEventBusのようなものが使用できるとよいでしょう。
編集:問題は、それを実装する理想的な方法は何ですか。これにより、メッセージを処理する必要がなくなり、STICKY サービスが提供されます。
android - ライブラリ Otto 使用時のエラー
私はライブラリOttoを扱い、ここで例を試してみようとしています
そして、私は例を実行することができました。しかし、私は少し変更された例でエラーが発生したコンポーネントを操作したい
主な活動:
断片:
私はちょうど変更しました:
むしろmainTxt.setText(s);
、メッセージを表示して値を設定するだけでなく、イベントをフラグメント化したいmainTxt
エラー:
理解するのを手伝ってください