2014-02-07 531 views
0

您好我正在編寫程序,它使用Alarmmanager每隔5分鐘獲取用戶當前的經度和經度,並將其存儲在共享偏好設置中。我想運行此搜索背景,以便使用service.I要停止服務獲取的lattitude和經度,以避免電池drain.This後是我的代碼執行後停止服務

CurrentLocation.java

import com.google.android.gms.maps.model.LatLng; 

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.content.ServiceConnection; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.preference.PreferenceManager; 
import android.util.Log; 
import android.widget.Toast; 


public class CurrentLocation extends Service implements LocationListener { 

    private Context mcontext; 
    SharedPreferences shprefs; 


    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
     this.mcontext=this; 
     getlocation(); 

    } 
    private void getlocation() { 
     // TODO Auto-generated method stub 
     Log.i("evvterer", "mnbj"); 
     LocationManager locationManager = (LocationManager) mcontext.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
    } 
    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 

     return null; 
    } 
    @Override 
    public void onLocationChanged(Location location) { 
     // TODO Auto-generated method stub 
     shprefs=PreferenceManager.getDefaultSharedPreferences(CurrentLocation.this); 


     double latitude=location.getLatitude(); 
     Editor edit=shprefs.edit(); 
     edit.putString("Ltd", ""+latitude); 
     edit.commit(); 

     double longitude=location.getLongitude(); 
     Editor edits=shprefs.edit(); 
     edits.putString("Lngtd", ""+longitude); 
     edits.commit(); 
     LatLng loca=new LatLng(latitude,longitude); 

    } 
    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 
} 

請幫我 在此先感謝

回答

0

使用廣播接收器插件因爲廣播接收機意圖觸發當你的條件滿足,所以使用廣播獲取用戶當前每隔5分鐘的經緯度:)從廣播接收機你的電池並不像服務那樣​​減少很多

0

當你使用返回null從onBind開始,您可能正在使用startService()來啓動您的CurrentLocation服務。 所以,當你完成你的CurrentLocation服務,簡單地打電話stopService (Intent service)

但是,如果你已經使用bindService,那麼你必須使用unBindService()。

要在確切的時間停止服務,您可以在onLocationChanged()的結尾調用您的活動中的方法,並從該方法停止該服務。

或者向與您的活動相關聯的處理程序發送消息以停止服務。

並添加您的代碼以啓動該服務,以便它可以幫助他人回答您的問題。