我正在研究一個必須在後臺工作並將位置更新發送到服務器的應用程序。服務停止更新位置
該代碼非常簡單,正常工作。有一種服務具有一個Timer,它每15秒向服務器發送一次更新,並且還實現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);
}
在實踐中我有一些問題,我的代碼。服務應該在後臺運行,即使Service stop在那裏有一個GCM系統可以在後臺重新啓動服務。
即使有了這些保護措施,我仍然有問題,有時應用程序不再更新位置,即使明確表示服務仍在運行。在Google地圖應用程序中,我可以看到該位置在那裏是正確的,但在我的應用程序中沒有。這怎麼可能,爲什麼我不再獲得'onLocationChanged'事件。
感謝您的幫助。
這是一項服務。 – nickik 2013-05-15 13:47:28
更新了我的答案。一探究竟。 – slhddn 2013-05-15 14:11:45
爲什麼我要繞過android.os.Message?我可以直接在LocationListener中做我所做的事情。 – nickik 2013-05-21 17:25:59