2013-10-24 92 views
10

我在我的應用程序中有服務意圖。這項服務有一些工作要做 - 上傳一些文件。它只在需要做什麼時才運行。應用程序被殺後保持活着意向服務

當滿足一些條件時服務不會上傳,例如沒有Internet連接。出於這個原因,它將自身註冊到廣播接收器上以接收關於互聯網連接改變的消息。

的問題是,服務被殺害與應用程序,即使它是做什麼的,例如:

  1. 應用正在發送意圖到服務
  2. 服務開始上傳一些東西,樣樣精
  3. X%上傳,應用程序被殺害,服務中止
  4. 互聯網連接改變 - 服務被喚醒。

如果服務在應用程序被殺後被喚醒,爲什麼它會被應用程序終止?有什麼辦法可以在應用程序死亡時阻止查殺服務?

我手動殺死應用程序。我知道android可以隨時殺死我的服務,我不想阻止它。我只想在用戶關閉或殺死應用後運行此服務。

+0

你是什麼意思與'殺死'你的應用程序? –

+2

@StefandeBruijn很難說。我所做的是使用主屏幕顯示正在運行的應用程序,然後移出我的應用程序。如果可能,我想保持我的服務活着。我認爲這是可能的,因爲android在廣播接收器上喚醒了我的服務。 – Ari

+0

你找到了你的這個問題的答案@Ari –

回答

1

因爲您使用了intentService,意味着intentService將會在活動銷燬 時銷燬,因此您必須使用Service而不是intentService,因此您可以在背景中上傳文件。

根據服務和活動之間的操作通過廣播接收器或將服務綁定到活動。

編輯:

該服務可以從任何線程被觸發。

IntentService必須由主線程觸發。

+0

意圖服務對我來說比服務更好,它不是一個問題,它是意向服務 – Ari

+0

IntentService一旦銷燬MainThread – Basbous

+0

就會銷燬它,但它在廣播接收器事件中恢復活動 – Ari

1

「只有當有事情需要時纔會運行。」只有理論上:) - 也許這就是你想要達到的目標。 「

」問題是,即使服務正在執行某些操作,服務也會被終止,例如:「 當然,在用戶操作將結束您的服務或意圖服務時,會出現這種情況。 This是一個失敗的答案。

「有什麼辦法可以在應用程序死亡時阻止查殺服務?」 它只是看在谷歌「家長控制」任務保護的」關鍵字!

0

如果你不介意顯示通知(你的情況,你可以與上傳進度示例顯示通知),然後在您的IntentService(或服務),您可以撥打:

startForeground(INT ID,通知通告)

這應該防止被查殺服務時,您的應用程序被殺害。

來自文檔:「如果殺死你的服務會對用戶造成破壞,比如你的服務正在執行背景音樂播放,那麼用戶會注意他們的音樂是否停止播放。

相關問題