2016-03-20 199 views
1

基本上,我有一項服務每隔30分鐘運行一次以檢查我的位置,當位置更改時彈出基本通知。當我的應用程序關閉時,我只需要此服務(也停止/暫停)。所以即時通訊問我應該在哪裏開始我的活動?Android:關閉我的應用程序時啓動我的服務

我想要類似於Facebook,Instagram和大多數應用程序都具有...從後臺運行的服務,當通知彈出時只需打開應用程序。當應用程序打開時,該服務不應該做任何事情。

我試過onDestroy()方法(在我的MainActivity中),但沒有解決,onStop()方法也沒有。

我能解釋一下自己嗎?

謝謝!

+0

我不認爲這是一個好主意。我的意思是,如果有人剛剛打開關閉或反過來你的應用程序,你的服務想法將沒有多大的幫助... – Mohit

+0

你可以隨時運行你的服務來獲取位置... – Mohit

回答

0

重複執行的任務應使用AlarmManager(或JobScheduler)安排。

這通常在BroadcastReceiver中完成,其對BOOT_COMPLETED作出反應。

如果要在活動處於活動狀態時取消這樣的工作,請撥打AlarmManager中的相應方法onResume和。

+0

謝謝隊友!我認爲這是方式。我一直在尋找,我發現這篇文章真的很有趣太http://stackoverflow.com/questions/9869153/android-periodic-gps-location-updates-with-alarmmanager-inside-a-service –

0

如果你希望你的服務,在任何時候事件的背景關閉應用程序之後運行,你需要讓你的服務STICKY,你可以做的是,在OnStartCommand

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("LocalService", "Received start id " + startId + ": " + intent); 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

注意,它返回START_SICKY它告訴操作系統在有足夠的內存後重新創建服務,並再次用null意圖調用onStartCommand()。

另請參閱關於application:persistent這是「應用程序是否應始終保持運行」。這更麻煩 - 系統會盡量不殺你的應用程序,這會影響系統中的其他人,你應該小心使用它。

相關問題