(Android Studio)将应用程序连接到Google Endpoints Module

时间:2015-09-29 10:42:39

标签: google-app-engine android-studio google-cloud-endpoints google-cloud-sql google-cloud-platform

我在第二步here后遇到了问题。

我真的不明白这个示例除了返回简单的toast消息之外还做了什么。它如何利用API来显示该消息?

class EndpointsAsyncTask extends AsyncTask<Pair<Context, String>, Void, String> {
private static MyApi myApiService = null;
private Context context;

@Override
protected String doInBackground(Pair<Context, String>... params) {
    if(myApiService == null) {  // Only do this once
        MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                new AndroidJsonFactory(), null)
            // options for running against local devappserver
            // - 10.0.2.2 is localhost's IP address in Android emulator
            // - turn off compression when running against local devappserver
            .setRootUrl("http://10.0.2.2:8080/_ah/api/")
            .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
                @Override
                public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
                    abstractGoogleClientRequest.setDisableGZipContent(true);
                }
            });
            // end options for devappserver

        myApiService = builder.build();
    }

    context = params[0].first;
    String name = params[0].second;

    try {
        return myApiService.sayHi(name).execute().getData();
    } catch (IOException e) {
        return e.getMessage();
    }
}

@Override
protected void onPostExecute(String result) {
    Toast.makeText(context, result, Toast.LENGTH_LONG).show();
}

我担心这个样本对我有限的知识太复杂了。运行应用程序时,我如何与Google端点模块“交谈”?具体来说,什么是EndpointsAsyncTask();?

是否有资源列出了我可用的所有方法?是否有更简单的应用与Google Cloud Endpoint通信的示例?

1 个答案:

答案 0 :(得分:0)

您可以使用的服务方法由第1节中的后端源定义。

在您发布的示例中,此行:myApiService.sayHi(name).execute() 是对后端的实际调用调用,您通过在后端模块的MyEndpoint.java类中的方法上注释@ApiMethod(“sayHi”)来定义。

您的Android应用定义EndpointsAsyncTask的原因是因为触发网络的调用等慢速操作需要在UI线程之外发生,以避免锁定UI。该演示只是将返回的值放入Toast中,但您可以修改onPostExecute()以根据结果执行任何操作。

有关Google Endpoints的更多信息,请查看: https://cloud.google.com/appengine/docs/java/endpoints/

有关使用Android AsyncTask的信息,请点击此处: http://developer.android.com/reference/android/os/AsyncTask.html