是否有任何关于此的示例或与之相关的教程
答案 0 :(得分:0)
好吧,正如法尔马里已经说过的......这是一个非常模糊的问题。但是,我仍然可以给你一些发人深省的冲动:
您可以使用在特定时间周期内查询服务器的服务来检查是否有新消息。这会产生很多开销数据,因为即使没有任何消息,服务仍会询问服务器。计时器会这样做:
public Timer timerT = new Timer();
Handler updateNow;
TimerTask task = new TimerTask() {
public void run() {
updateNow.sendEmptyMessage(TICK);
}
};
updateNow = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case TICK:
// Query wird gestartet
new updateMsg().execute();
break;
}
}
};
// Fragt alle 60 Sekunden
timerT.scheduleAtFixedRate(task, 0, (60 * 1000));
Und die Abfrage an den Server:
public class updateMsg extends AsyncTask<String, String, Void> {
String message = "";
protected void onPreExecute() { }
protected Void doInBackground(String... data) {
HttpReq request = Http.getInstance().createRequest();
request.setUrl("http://www.deinserver.de/msg.php");
request.setMethod("POST");
request.addParam("fuer_name", "keenora");
request.execute();
message = request.getResult();
return null;
}
protected void onPostExecute(Void unused) {
Log.e("DEBUG", "Nachricht vom Server erhalten: " + message);
}
protected void onCancelled() { }
}
Und nicht zu vergessen die Server-Seite:
<?php
// Ganz dummes Script
switch($_POST['fuer_name']) {
case 'keenora': {
echo 'Hallo!';
break;
}
default: {
echo 'Es gibt keine neuen Nachrichten!';
break;
}
}
?>