1

私は(一種の)Android開発に不慣れで、PircBotライブラリに基づいてAndroidメッセンジャーアプリを作成したいと考えています. 私が現在認識しているいくつかの制約があります。

  • IRC を使用する必要があります。既に要件に含まれているため、おそらくこれを変更することはできません
  • IRC サービスは独自のプロセスで実行する必要があるため、IRC メッセージをリッスンしているときに UI に干渉せず、バックグラウンドでメッセージを受信し、UI を表示せずに通知を送信する必要があります。
  • 画面ごとに異なるアクティビティを使用しているため、すべてのアクティビティ (ログイン、チャンネルへの参加、メッセージの送受信) でサービスを使用する必要があり、接続の現在の状態に基づいてさまざまなアクティビティに通知する必要があります。

アクティビティからサービスをバインドしようとしましたが、バインダーは同じプロセス内のサービスでのみ機能するようです。(これについてはよくわかりません。検索しても有用なものは何も返されませんでした)

すべての制約を満たすことができるようにプロジェクトを構成するための推奨される方法は何ですか? また、他にどのような問題が発生する可能性がありますか?

下手な英語でごめんなさい

4

1 に答える 1

3

IRC をリッスンしているときに UI に干渉しないように、IRC サービスは独自のプロセスで実行する必要があります。

IRC サービスを独自のプロセスで実行する必要がある理由がわかりません。ドキュメントに記載されているように、サービスは、定義上、ユーザーと対話しない要素です。

Service は、ユーザーと対話せずに実行時間の長い操作を実行したい、または他のアプリケーションが使用する機能を提供したいというアプリケーションの要求を表すアプリケーション コンポーネントです。

そして、おっしゃる通り、このサービスを独自のプロセスで実行することで、バインドできなくなります(実際、その時点でIPC 通信を行う必要があります)。


画面ごとに異なるアクティビティを使用しているため、すべてのアクティビティ (ログイン、チャンネルへの参加、メッセージの送受信) でサービスを使用する必要があり、接続の現在の状態に基づいてさまざまなアクティビティに通知する必要があります。

この要件を満たすには、LocalBroadcastManagerを使用して、サービスからすべてのアクティビティに情報を共有するだけです。アクティビティは、聞きたいイベント (connectionStateChange、MessageReceived など) の BroadcastReceivers を持つことができ、それに応じて動作します。


最後に、他の人のコードを読むことは常に良い考えなので、フレンドリーな検索エンジンによってもたらされた次の 2 つの類似プロジェクトをチェックしてください。

于 2013-06-15T23:03:14.370 に答える