我想创建一个在线队列监视应用程序,它将显示输入到数据库中的新数据。UI示例如下
如果要输入新数据(Json
),我希望当前服务票证每秒更新一次。
MainActivity.java
public class MainActivity extends AppCompatActivity {
public static TextView data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button input_number = (Button) findViewById(R.id.button2);
Button reminder = (Button) findViewById(R.id.button);
final TextView userinputtext = (TextView) findViewById(R.id.textView6);
data = (TextView)findViewById(R.id.textView10);
这是我创建的 data.java 。
public class data extends AsyncTask<Void,Void,Void> {
String data=" ";
String singleParsed = " ";
@Override
protected Void doInBackground(Void... voids) {
try {
URL url = new URL("url/SamplePage.php");
HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line ="";
while(line!=null){
line = bufferedReader.readLine();
data = data + line;
}
JSONArray JA = new JSONArray(data);
for (int i =0; i<JA.length();i++){
JSONObject JO = (JSONObject) JA.get(i);
singleParsed = JO.get("ticket_number")+"";
//dataParsed = dataParsed + singleParsed;
}
}catch (MalformedURLException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (JSONException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
MainActivity.data.setText(this.singleParsed);
}
}
如果有任何意见或帮助,我将不胜感激。谢谢。
答案 0 :(得分:0)
最快的答案是每秒设置一个计时器,以查询数据库中的数据并更新视图。 如果您正在寻找更优化,完整,文档化和更轻松的解决方案,建议您使用Firebase,它提供诸如实时数据库之类的服务:https://youtu.be/U5aeM5dvUpA 当然,还有其他选择,例如RethinkDB。 您还应该查找websocket,因为它们类似于解决此类实时更新问题的方法。 但是在我看来,firebase是完美的选择。
答案 1 :(得分:0)
您可以使用SyncAdapter和LiveData。如果您使用Room,它将更容易处理。