0

我正在开发一个使用 REST 协议的客户端-服务器 android 应用程序。

基本上我先上传一张图片到服务器,然后在服务器上处理它,然后在android应用程序中更新这张图片的状态(从新到已处理);

所以用户需要按“刷新”从服务器接收更新的已处理图片列表...

我肯定不喜欢...

服务器完成处理后是否可以进行某种回调?我想我正在寻找有点像... ajax,换句话说,服务器需要触发更新列表的事件,而不是用户按下“刷新”按钮。我也不想在发送图片后每隔约 2 秒询问服务器是否已处理...我认为必须有更优雅的解决方案。

实现这种功能的正确方法是什么?

我可以同时更改应用程序的服务器和 android 部分

先感谢您!

4

2 回答 2

0

这就是谷歌云消息的用途,服务器通知一个或多个设备有新的东西可以从服务器获取。电话呼叫服务器以获取所有新信息并进行处理

另一种选择是使用 xmpp,看看asmack

于 2013-08-08T13:55:23.240 回答
0

您可以使用droidQuery执行具有AjaxJavascript. 它是高度可配置的,因此请查看javadocs以获得帮助(如果您使用过Javascript,您会很快掌握)。该调用将在后台线程中运行,但回调方法将在主线程中调用。下面是一个如何做得到post响应JSON的例子:

$.ajax(new AjaxOptions().url("http://www.example.com")
                        .type("post")
                        .dataType("json")
                        .data(bitmap_bytes)
                        .context(this)
                        .success(new Function() {
                            @Override
                            public void invoke($ droidQuery, Object... params) {
                                JSONObject json = (JSONObject) params[0];
                                //handle json response. Also see $.map(JSONObject) for parsing
                            }
                        })
                        .error(new Function() {
                            @Override
                            public void invoke($ droidQuery, Object... params) {
                                AjaxError e = (AjaxError) params[0];
                                Log.e("$", "Error: " + e.status + ": " + e.error);
                            }
                        }));

如果你想添加一个进度微调器,droidProgress是一个droidQuery 扩展,可以很容易地与droidQuery集成。

此外,您还可以在将 Java 位图转换为字节数组时了解如何将 a 转换Bitmap为 a 。byte[]

于 2013-08-13T15:32:07.517 回答