これまでのところ、単純なローカル サービスのクラスができました。私がやりたいことは、アプリケーションのさまざまなアクティビティからこのローカル サービスにリクエストを送信することです。これらのリクエストのパラメーターに応じて、サービスは HttpClient 経由で Web サーバーに接続し、JSONObject を受け取り、それをアクティビティに返します。すべての HTTP 通信は既にアクティビティ内で機能していますが、ローカル サービスの別のスレッドで実行したいと考えています。
これまでのところ、私の非常に単純なローカル サービスのソース コードは次のようになります。
// BackgroundService.java
package com.test.localservice;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class BackgroundService extends Service
{
@Override
public void onCreate() {
super.onCreate();
Log.i("BackgroundService", "onCreate()");
Thread thr = new Thread(null, new RunThread(), "BackgroundService");
thr.start();
}
class RunThread implements Runnable
{
public void run() {
Log.i("BackgroundService", "run()");
/* Here the HTTP JSON communication is going to happen */
//BackgroundService.this.stopSelf();
}
}
@Override
public void onDestroy()
{
Log.i("BackgroundService", "onDestroy()");
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startId) {
Log.i("BackgroundService", "onStart()");
super.onStart(intent, startId);
}
@Override
public IBinder onBind(Intent intent) {
Log.i("BackgroundService", "onBind()");
return null;
}
}
私が現在直面している問題 (知識不足のため) は、通信部分のActivity <--> Local Serviceです。AIDL (Android Interface Definition Language)を使用したリモート サービスの通信とオブジェクト交換の例をいくつか見つけました。しかし、この道を行かなければならないかどうかはわかりません。自分で定義したオブジェクトを交換するか、それが不可能な場合は JSONObject を交換するか、単純な文字列配列だけでも機能する場合は (今のところ) 単純に交換したいと思います。
誰かが私を正しい方向に向けてください。可能であれば、ローカル サービスとのオブジェクト交換 (双方向) の簡単な例を挙げてください。
前もって感謝します。