我正在开发一个简单的android
应用程序,该应用程序通过json
从后台服务接收一个websocket
字符串。 json
数据会随着时间变化。例如,json
字符串为:
{"app":"events","command":"handleEvents","args":{"eventId":16,"name":"X2_PA_STATE","params":[0]}}
由于参数值一直在变化,如何通过TextView
显示它并自动更新它的值?我已经尝试了事件监听器,但似乎无法正常工作。
答案 0 :(得分:0)
Android具有内置的JSON解析器。
JSONObject obj = new JSONObject(<res_json_string>);
String app = obj.optString("app");
String command = obj.optString("command");
JSONObject args = obj.optJSONObject("args");
String eventId = args.optString("eventId");
String name = args.optString("name");
JSONArray p = args.optJSONArray("params");
ArrayList<String> params = new ArrayList<>();
for(int i = 0; i < p.length; i++){
params.add(p.get(i));
}
由于您处于后台服务中,因此必须使用Handler
或BroadcastReceiver
才能完成此任务。 (仅可以从UI线程更新UI)
请参见此链接,例如Updating UI from Service
希望这会有所帮助,祝您编程愉快!
答案 1 :(得分:0)
如果我的理解正确,那么您有某种与Web无关的websocket服务可以发送数据。您可能缺少的部分是将websocket实现添加到Android应用中,以侦听websocket服务并解析数据。然后,您可以在每次从网络套接字接收数据时调用textview.setText()
方法来更新textview值。
在这种情况下,请看一下OkHttp WebSocket的实现
https://square.github.io/okhttp/3.x/okhttp/okhttp3/WebSocket.html