バックグラウンドで動作し、サーバーに位置情報の更新を送信する必要があるアプリに取り組んでいます。
コードは非常にシンプルで、正常に動作します。15 秒ごとに更新をサーバーに送信する Timer を持つサービスがあり、LocationListener インターフェイスも実装しています。
すべてのコードを提供することが役立つとは思いません。クラスを設定する方法は次のとおりです。
@Override
public void onCreate() {
super.onCreate();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER , 5000, 10.0f, this);
locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER , 5000, 10.0f, this);
//Ping Task sends updates to the Server
Ping_Timer.scheduleAtFixedRate( new Ping_Task(), 5000, Ping_Task.TIME_GET_JOBS*1000 );
}
実際には、コードにいくつかの問題があります。サービスが停止した場合でも、バックグラウンドでサービスを再起動するための GCM システムが配置されている場合でも、サービスはバックグラウンドで動作するはずです。
これらの保護を行っても、サービスがまだ実行されていることが明らかな場合でも、アプリが位置情報を更新しないことがあります。Google マップ アプリでは場所が正しいことを確認できますが、アプリでは正しくありません。これはどうしてですか、なぜ「onLocationChanged」イベントが発生しなくなったのですか。
ご協力いただきありがとうございます。