我在Service和BroadcastReceiver之間產生混淆。我正在開發基於位置的應用程序。在這種情況下,每當他/她的位置發生重大變化時(例如10米),我都希望將用戶的位置存儲到數據庫中。頻繁獲取和存儲位置有哪些好處 - 服務或BroadcastReceiver?
我正在使用LocationListener,它工作正常。但是我的困境是:在哪裏編寫onLocationChanged()方法 - 在BroadcastReceiver的onReceive()方法中還是在Service中?
如果我正在使用服務,那麼在哪種服務方法下,我應該寫下面的代碼?
這裏是我的位置監聽器:
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
if(location != null){
//Code to populate location-data into the database table.
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5, 10, locationListener);
任何人都可以請建議我是什麼來實現它的更好的辦法?我已經閱讀了關於Service和BroadcastReceiver的所有Android開發人員文檔,但是我仍然無法區分它們的用法?
Thanx Nikolai,它的一個很好的解釋。那麼你是否試圖說我應該把上面的代碼放在後臺線程中,例如AsyncTask? –
取決於)))是否要確保設備在服務運行時不會進入睡眠狀態?這不是一件好事(你應該讓操作系統進行電源管理),但是如果你確信這項服務是必不可少的...... –
我希望我的服務只在我的應用程序處於前景時運行。如果該應用在後臺運行,我會停止此服務。這很好嗎? –