我在数据库中有一个动态表,每当有一个新插入时,我需要做一些计算并将数据发送到android,所以我知道如何在android和php之间建立连接,但是我该如何使android对php文件进行多次检查,以便它可以显示数据?
private void loadProducts() {
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_PRODUCTS,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
// converting the string to json array object
JSONArray products = new JSONArray(response);
// traversing through all the object
for (int i = 0; i < products.length(); i++) {
// getting product object from json array
JSONObject productObject = products.getJSONObject(i);
int Temp_dt = productObject.getInt("Temp_dt");
int BusNumber = productObject.getInt("BusNumber");
Product product = new Product(Temp_dt, BusNumber);
// adding the product to product list
productList.add(product);
}
adapter = new ProductsAdapter(WaitingActivity.this, productList);
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) { Toast.makeText(WaitingActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
我希望在有一个新插入时显示数据,但它仅显示数据表中存在的内容,并且如果有新插入物,我需要再次输入该活动,以便它可以显示我想要的内容。
答案 0 :(得分:1)
如果没有客户端的查询,就无法使服务器发送数据。您必须每N秒检查一次android上的更改。我认为您不想每次都发送完整的表,因此可以在数据库中创建字段,其中包含表的最后更新时间。它可以被触发器追赶。首次下载表格时,您可以在Android上节省该时间。现在,您每隔N秒就会从服务器获取一次此时间,如果它与保存的时间不同-请重新加载表。
或者使用套接字,但是PHP不支持它,您需要另一个服务器应用程序
答案 1 :(得分:0)
您要寻找的基本上是MySQL的android(或客户端)实时更新。 我想您有这些选择。
我认为这不是一个好的解决方案。因为您无用地检查数据更改并在固定间隔内进行网络操作。
timer.scheduleAtFixedRate(yourtask,delay,interval)
这更好,因为只要您的数据有任何更改,就将推送通知发送到客户端以进行相应更改。
您可以从此处查看完整的通知教程: Android NotificationTutorial
最简单的解决方案是使用Firebase实时数据库或FireStore数据库。如果您没有任何问题可以迁移到NoSQL数据库,那么这可能是您的最佳解决方案。