经过长时间的搜索后,我仍然对此感到困惑,尽管我找到了一些相关的帖子,但他们没有回答我正在寻找的内容。在我的场景中,我想每隔 5 分钟将用户的 lat long 发送到服务器。为此,我使用了一个具有自己进程的服务,以便在 Activity 销毁时它不会被杀死,并且在服务方法 onStartCommand 中我使用了一个条件始终为 true 的 while 循环,在该循环中我将位置更新到服务器并延迟thread.sleep 如下图所示
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
While(true)
{
Location currentLocation = getLocation();
updateLocationToServer(currentLocation);
try
{
Thread.sleep(300000)
}
catch(Exception e)
{
e.printStackTrace()
}
}
return Service.START_STICKY;
在这里我无法理解return语句无法访问,那么当服务被销毁时如何自动重新启动服务,其次使用thread.sleep导致ANR(应用程序无响应),而服务是后台进程,我发现它直接在UI中运行线程这些信息让我感到困惑,在这种情况下,获得所需功能的最佳方法是什么。