長い検索の後、関連する投稿をいくつか見つけましたが、探していたものに答えていませんでしたが、まだ混乱しています。私のシナリオでは、5分ごとなどの固定間隔でユーザーの緯度経度をサーバーに送信したいと考えています。これを行うには、独自のプロセスでサービスを使用して、アクティビティが破棄されたときにサービスが強制終了されないようにし、サービス メソッド 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 ステートメントが到達不能であることを理解できません。次に、サービスが破棄されたときにサービスを自動的に再起動し、2 番目に thread.sleep を使用して ANR (Application Not Responding) を引き起こし、サービスがバックグラウンド プロセスであり、UI で直接実行されていることがわかりました。これらの情報は私を混乱させます。この場合、目的の機能を取得するための最良の方法は何ですか。