2014-03-30 110 views
0

我一直在尋找互聯網來回答這個問題,但到目前爲止沒有任何工作適合我。 我試圖在後臺獲取位置更新。當「onLocationChanged」被調用時,將啓動一個檢查方法,然後將會或不會發送一個通知。問題是關閉我的應用程序時,onLocationChanged似乎並沒有被調用。 onLocationChanged被調用的唯一時間是當我重新打開我的應用程序。我希望我的應用程序能夠不斷檢查位置變化。onLocationChanged在應用程序關閉時不會被調用

那使用的代碼IM:

public class MainActivity extends Activity implements LocationListener { 

private LocationManager locationManager; 
private String provider; 
private Location location; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    createData(); 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    provider = locationManager.getBestProvider(new Criteria(), false); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
    location = locationManager.getLastKnownLocation(provider); 
    ....... 
} 

@Override 
    protected void onResume() { 
    super.onResume(); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
    } 

    @Override 
    protected void onPause() { 
    super.onPause(); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     if(newactiveplace(location)) 
      sendnotification(); 
} 

任何人都可以請。幫幫我? 非常感謝。

+0

使用位置服務做那些東西 –

+0

我該怎麼做? – user3425561

回答

0

您應該重寫用戶關閉活動時發生的情況。用途:

@Override 
public void onBackPressed() { 
    Intent i = new Intent(Intent.ACTION_MAIN); 
    i.addCategory(Intent.CATEGORY_HOME); 
    startActivity(i); 
    //super.onBackPressed(); 
} 

當用戶按下後退按鈕這樣的話,它會留在後臺的應用程序,你仍然有你的服務運行。

小心,因爲位置更新會導致用戶的電池耗盡,用戶可能甚至不知道該應用程序正在運行。

+0

非常感謝,現在真的好像工作。我驚訝的是,onBackPressed()似乎沒有提到任何地方。我也擔心用戶電池雖然...我可能需要調整PARAMS requestLocationUpdates – user3425561

+0

很高興幫助:)記住要驗證其他用戶的答案,如果它的工作! 也知道,如我所說,這不是一個「理想」的情況,所以也許警告用戶某處(可能是一個持續的通知),該應用程序將更新背景上的位置。 – Alqueraf

+0

你知道更好的方法嗎? – user3425561

相關問題