我的應用程序:我正在開發基於位置的服務,它用於跟蹤銷售人員。情景是人xyz想跟蹤他的銷售人員,他將設置獲取位置更新的時間和距離間隔,之後他將手機交給銷售人員,App應該連續運行並跟蹤GPS。基於位置的服務在後臺運行永遠
問題:我已經差不多完成了這個項目,但是我想運行這個應用程序FOREVER來跟蹤,我是通過GPS來做這件事的,當我在設置時間和距離之後最小化應用程序時,我的應用程序將會關閉。將在FOREGROUND中完美運作。
請給我建議這是什麼可能的解決方案。
我的應用程序:我正在開發基於位置的服務,它用於跟蹤銷售人員。情景是人xyz想跟蹤他的銷售人員,他將設置獲取位置更新的時間和距離間隔,之後他將手機交給銷售人員,App應該連續運行並跟蹤GPS。基於位置的服務在後臺運行永遠
問題:我已經差不多完成了這個項目,但是我想運行這個應用程序FOREVER來跟蹤,我是通過GPS來做這件事的,當我在設置時間和距離之後最小化應用程序時,我的應用程序將會關閉。將在FOREGROUND中完美運作。
請給我建議這是什麼可能的解決方案。
首先,您想要在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);
您需要使用服務,而不是您的常規應用程序。即使應用程序關閉,服務也可以運行。你不能運行服務「永遠」,除此之外你總是可以去手動停止服務。爲了服務生存更長時間,它必須是一個前臺服務 - 更多在這裏:Running a Service in the Foreground。
startForeground()沒有運行在按鈕上我們shd使用這個確切的地方? – krish 2013-02-16 05:42:23
最簡單的方法是
@Override
public void onDestroy() {
Intent serviceIntent = new Intent(getApplicationContext(), UpdateLocationService.class);
getApplicationContext().startService(serviceIntent);
}
http://pastie.org/6192104看看我的代碼here..I已經使用服務,但即時通訊沒有得到確切位置使用alarammanager ..我只是試圖打印在onDestroy中發送消息,但在Android操作系統正在查殺時此方法未運行應用程序 – krish 2013-02-16 05:37:43
我沒有看到您的服務。這只是活動。但是你希望你所有的更新工作都在你的服務中。所以即使活動已關閉,您也可以運行它。 – n3utrino 2013-02-16 05:43:02