2

私はアプリを持っています。これには、ユーザーがアプリを閉じても作業が完了するまでサービスが機能する場合に、STICKY を実行するサービスがあります。

チュートリアルAndroid Example: Communication between Activity and Service using Messagingを見て、アプリに適応しましたが、メッセージを送信しようとすると、サービスまたはクライアントで受信されません。

また、ArrayList のようにより複雑な引数を渡す必要があります。ワークフローは次のようになります。

  1. ユーザーがアプリを起動し、アプリがサービスを開始する
  2. ユーザーがアプリのボタンを押すと、アプリがサービスに信号を送信します (これは整数である可能性があります)
  3. サービスはインターネットからデータを取得し、このデータを処理してアプリに送信します (実行されていない場合) サービスが新しいデータについてユーザーに通知する
  4. しばらくしてサーバーから何も受信しない場合、サービスは停止します。

問題は、サービスとアプリケーションの間で複雑なオブジェクトを渡す方法です。

4

1 に答える 1

1

Messageusingで複雑なオブジェクトを渡すことができますsetData(android.os.Bundle)。バンドルはParcelableシリアル化できるようにデータを必要としますが、利便性のために基本型 (整数や文字列など) の ArrayLists をサポートしています。リストにカスタム オブジェクトが含まれている場合は、それらを実装Parcelableし、 を使用してバンドルに追加する必要がありますputParcelableArrayList(String key, ArrayList<? extends Parcelable> value)

データが非常に複雑/構造化されている場合は、コンテンツ プロバイダーの使用を検討することもできます。最初の学習曲線がありますが、プロバイダーはいくつかのケースに適しています。

于 2013-02-25T03:21:30.373 に答える