gpt4 book ai didi

android - 为每隔几秒发出一次请求的android应用程序创建服务器端

转载 作者:行者123 更新时间:2023-11-29 20:58:09 25 4
gpt4 key购买 nike

我正在创建一个 Android 应用程序,一个用户可以在 map 上看到另一个用户。

事情是这样的
有一个网络服务,客户端从网络服务请求所有登录的用户,然后将用户呈现为 map 上的标记。每隔几秒它会再次发出请求。
我已经弄清楚了客户端并开始工作。

问题出在服务器端。我这样做的方式是:

  • Web 服务接收客户端请求并将客户端经纬度保存在数据库中
  • 从数据库中检索其他活跃用户并将它们发送回客户端。

它有效。但我知道这不是办法。

这里是问题区域:

  • 客户端每 5 秒调用一次 Web 服务,因此 Web 服务必须每秒钟更新一次客户端在数据库中的位置。(不好)
  • 如果有 100 个用户,则 Web 服务必须每 5 秒进行 100 次更新。(非常糟糕)

如何改进服务器逻辑?

最佳答案

您必须创建一个新线程,以便在调用时间超过预期时调用不会锁定设备。 AsyncTask 是一种使用多线程的简单方法,但它缺少重复任务的功能。我会说您最好使用 Timer 或较新的 ScheduledExecutorService。如果您选择使用 Timer,您可以创建一个可以交给它的 TimerTask。 ScheduledExecutorService 取而代之的是 Runnable。

您可能希望将线程包装在服务中(该服务不提供新线程),但这并不总是必要的,具体取决于您的需要。

按照建议,您还可以使用 Handler.postDelayed()。尽管您仍然需要创建一个新线程,然后在其上调用 Looper.prepare():

类 LooperThread 扩展线程 { 公共(public)处理程序 mHandler;

  public void run() {
Looper.prepare();

mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};

Looper.loop();
}

}(来自 Looper 文档的代码)

还有;每 5 秒调用一次 Web 服务似乎过于频繁,尤其是当用户的连接速度较慢或有数据需要传输时,尽量减少调用次数。

关于android - 为每隔几秒发出一次请求的android应用程序创建服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com