記録のために、他の人に役立つかもしれないので、私は自分の質問に答えます...(アクティブな状態を維持する必要があるため、IntentServiceではなく通常のサービスを使用しています)
アクティビティがサービスからメッセージを受信するには、ハンドラーをそのようにインスタンス化する必要があります...
private Handler handler = new Handler()
{
public void handleMessage(Message message)
{
Object path = message.obj;
if (message.arg1 == 5 && path != null)
{
String myString = (String) message.obj;
Gson gson = new Gson();
MapPlot mapleg = gson.fromJson(myString, MapPlot.class);
String astr = "debug";
astr = astr + " ";
}
};
};
上記のコードは私のデバッグのもので構成されています。サービスはそのようにアクティビティにメッセージを送信します...
MapPlot mapleg = new MapPlot();
mapleg.fromPoint = LastGeoPoint;
mapleg.toPoint = nextGeoPoint;
Gson gson = new Gson();
String jsonString = gson.toJson(mapleg); //convert the mapleg class to a json string
debugString = jsonString;
//send the string to the activity
Messenger messenger = (Messenger) extras.get("MESSENGER");
Message msg = Message.obtain(); //this gets an empty message object
msg.arg1 = 5;
msg.obj = jsonString;
try
{
messenger.send(msg);
}
catch (android.os.RemoteException e1)
{
Log.w(getClass().getName(), "Exception sending message", e1);
}
今のところ、メッセージ識別子として番号5を選択しました。この場合、json文字列で複雑なクラスを渡し、アクティビティでそれを再構築しています。