2013-04-01 66 views
-2

我見過像山,JuiceDefender和MagicJack應用程序在後臺運行下去,除非力由用戶通過任務管理器關閉直接。 (即使如此,在薑餅,它不會關閉,除非你瀏覽在設置中的「下載的應用程序」下運行的應用程序,並且當你進入菜單時,強制關閉它,你可以選擇管理應用程序,如「清除內存「和」強制關閉「如何強制應用程序保持打開狀態?

我想知道這是如何實現的?我需要爲我的應用程序做類似的事情,但我不知道如何避免Android操作系統的自動任務查殺。不要說這是不可能的,因爲如果這是真的,JuiceDefender,MagicJack和Lookout將無法工作

+7

你最好有一個很好的理由。我的意思是說,如果這種情況沒有發生,小貓就會死亡。我討厭將我自己的設備控制在遠離我的應用程序。 –

回答

1

你可以擁有的是一種無限期維持的服務,你可以通過服務的onStartCommand返回Service.START_STICKY方法。

無論何時操作系統需要資源並選擇殺死您的應用程序,只要資源再次可用,您的服務就會重新生成。

時,要注意有一個應用程序,不斷地活着會導致消耗手機電池的電量。您應該(至少)通知用戶一個通知,告知您的應用程序在後臺仍然存在。

最重要的是,你可以register a broadcast receiver爲以重新啓動服務BOOT_COMPLETED事件而設備已被重新啓動。但是,請記住,這可能會導致手機電池電量耗盡,因此請小心操作。

1

我相信這些應用在他們的活動開始時(即調用onCreate()時)會啓動Service

一個Service保持運行應用程序時獲得暫停。當Service啓動時,您可能會返回在onStartCommandSTART_STICKY

此外,爲了防止由於Android的內存殺手被殺害的服務,你可以指定你的服務是對用戶重要致電startForeground()。 Android開發者網站上說:

前臺服務是一個被認爲是東西 用戶正在積極瞭解並因此不能對系統 候選人殺內存不足時的服務。

0

我創建一個應用程序,我不得不使用內部的OnCreate()以下的超功能的一種或多種:

onDestroy() 
onPause() 
onResume() 
onSaveInstanceState() 

從存儲器完全關閉應用程序。並且不要使用Activity.finish()方法。通常,Android在關閉應用程序方面做得非常好,當需要內存時,稱爲彈出堆棧並且不建議強制停留在內存中,除非有非常好的理由。希望能幫助到你。 您也可以查看Android DOC網站以獲取更多信息和示例。

相關問題