如何在android上使用调度操作

时间:2012-06-22 07:34:55

标签: android google-app-engine gwt gwt-platform

我正在开发一个在AppEngine上托管的项目,而对于浏览器客户端,我正在使用GWTP平台,这意味着在服务器上使用GIN(在客户端上)和GUICE。此外,它还使用模型,演示者,操作和事件。

我正在考虑为该服务编写一个Android客户端,但我不知道如何启动,因为我不知道如何连接和交换数据与web服务。我将不得不使用我用于浏览器客户端的动作和动作处理程序(http://code.google.com/p/gwt-platform/wiki/GettingStartedDispatch)。从Android我只知道如何使用RPC,我无法建立连接,我不知道如何将类从设备映射到服务器。

例如,通过使用GWTP,如果在浏览器客户端上我想在服务器上执行某些操作,我实现了一个Action类,一个ActionResult类(在客户端上)和一个ActionHandler类(在服务器上)。要分派一个动作,我使用DispatchAsync接口并获得我使用AsyncCallback的结果。

动作(在客户端上) - SendRoadNotification.java:

public class SendRoadNotification extends
    ActionImpl<SendRoadNotificationResult> {

private RoadNotification roadNot;



@SuppressWarnings("unused")
private SendRoadNotification() {
    // For serialization only
    }

public SendRoadNotification(RoadNotification roadNot) {
    this.roadNot = roadNot;
    }

public RoadNotification getRoadNot() {
    return roadNot;
    }
}

ActionResult(在客户端上) - SendRoadNotfifcationResult.java:

public class SendRoadNotificationResult implements Result {

private RoadNotification roadNot;

@SuppressWarnings("unused")
private SendRoadNotificationResult() {
    // For serialization only
    }

public SendRoadNotificationResult(RoadNotification roadNot) {
    this.roadNot = roadNot;
    }

public RoadNotification getRoadNot() {
    return roadNot;
    }
}

ActionHandler(在服务器上) - SendRoadNotificationActionHandler.java:

public class SendRoadNotificationActionHandler implements
    ActionHandler<SendRoadNotification, SendRoadNotificationResult> {

static DataStore ds = DataStore.getDatastoreService();

@Inject
public SendRoadNotificationActionHandler() {
    }

@Override
public SendRoadNotificationResult execute(SendRoadNotification action,
        ExecutionContext context) throws ActionException {

                        //Here I am doing something with that action
    }

@Override
public void undo(SendRoadNotification action,
        SendRoadNotificationResult result, ExecutionContext context)
        throws ActionException {
    }

@Override
public Class<SendRoadNotification> getActionType() {
    return SendRoadNotification.class;
        }
}

我使用它的方式是:

    SendRoadNotification action = new SendRoadNotification(rn);
            dispatchAsync.execute(action, sendRoadNotifCallback);

回调:

AsyncCallback<SendRoadNotificationResult> sendRoadNotifCallback = new AsyncCallback<SendRoadNotificationResult>() {

    @Override
    public void onSuccess(SendRoadNotificationResult result) {


    }

    @Override
    public void onFailure(Throwable caught) {
        Window.alert("Something went wrong");

    }

};

我如何在android中实现这个?有人可以给我一个例子或之前有这个问题吗?

我正在使用AppEngine sdk 1.6.4,GWT sdk 2.4.0,Eclipse的GWTP插件和Eclipse的GPE插件。

1 个答案:

答案 0 :(得分:1)

您可能希望查看ADT的GAE插件为“App Engine Connected Android apps”生成的源代码,以获取灵感。他们通过使用Android的HttpClient调用GWT端点来做类似的事情。

https://developers.google.com/eclipse/docs/appengine_connected_android