2013-02-16 54 views
0

我的應用程序:我正在開發基於位置的服務,它用於跟蹤銷售人員。情景是人xyz想跟蹤他的銷售人員,他將設置獲取位置更新的時間和距離間隔,之後他將手機交給銷售人員,App應該連續運行並跟蹤GPS。基於位置的服務在後臺運行永遠

問題:我已經差不多完成了這個項目,但是我想運行這個應用程序FOREVER來跟蹤,我是通過GPS來做這件事的,當我在設置時間和距離之後最小化應用程序時,我的應用程序將會關閉。將在FOREGROUND中完美運作。

請給我建議這是什麼可能的解決方案。

回答

1

首先,您想要在Service中進行跟蹤,而不是在活動本身中,因此即使用戶未與其交互,該應用也會執行該操作。

然後AlarmManager是你在找什麼。您可以安排在特定時間調用意向。因此,您可以檢查您的服務是否仍在運行,如果沒有重新啓動它以重新開始跟蹤。

從這個應用程序看看UpdateService

Intent i = new Intent(UPDATE_ACTION); 
PendingIntent alarmManagerPendingIntent = PendingIntent.getBroadcast(this, 0, i, 0); 

mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
       SystemClock.elapsedRealtime(), //Start now 
       10*60*1000, //every 10 minutes 
       alarmManagerPendingIntent); 
+0

http://pastie.org/6192104看看我的代碼here..I已經使用服務,但即時通訊沒有得到確切位置使用alarammanager ..我只是試圖打印在onDestroy中發送消息,但在Android操作系統正在查殺時此方法未運行應用程序 – krish 2013-02-16 05:37:43

+0

我沒有看到您的服務。這只是活動。但是你希望你所有的更新工作都在你的服務中。所以即使活動已關閉,您也可以運行它。 – n3utrino 2013-02-16 05:43:02

0

您需要使用服務,而不是您的常規應用程序。即使應用程序關閉,服務也可以運行。你不能運行服務「永遠」,除此之外你總是可以去手動停止服務。爲了服務生存更長時間,它必須是一個前臺服務 - 更多在這裏:Running a Service in the Foreground

+0

startForeground()沒有運行在按鈕上我們shd使用這個確切的地方? – krish 2013-02-16 05:42:23

0

最簡單的方法是

@Override 
public void onDestroy() { 
    Intent serviceIntent = new Intent(getApplicationContext(), UpdateLocationService.class); 
    getApplicationContext().startService(serviceIntent); 
}