2014-03-26 88 views
0

你好,我正在試圖在後臺運行一個服務,當應用程序被任務管理器銷燬時它不會停止。如果服務器中存在數據庫中的新插入,則服務的思路是每「x」分鐘進行驗證。在應用程序被任務管理器殺死後,服務是否仍然可以運行?

即使我關閉應用程序,但服務運行良好,但是當我使用任務管理器銷燬我的應用程序時,所有線程也都關閉了。

所以我想知道它是否有可能運行一個線程,永遠要求在後臺,除非用戶在應用程序本身取消它,忽略任務管理器造成的破壞,所以在將來我可以使用通知欄來告訴用戶在數據庫中發生了新插入。

Tryed:

public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 

       askServer(); // i made a timertask that ask every "x" minute 


    return START_STICKY; 
} 

,因爲我讀START_STICKY應該再次運行該服務,如果它被殺死出於某種原因,我知道這是可以做到,因爲有些應用程序獲得通過任務管理器關閉,仍然得到通知從它作爲whatsapp,bbms和其他。請告訴我,如果我錯了什麼,並感謝您的閱讀!


UPDATE:我不是試圖打破任何法律或安全規則從Android和IM不試圖忽略在設置應用程序的回採服務選項。我希望該用戶使用的,當你按下回家了,而出現的界面後聽在我的情況下,新進入的「事件」嵌入式服務繼續運行:

enter image description here


UPDATE:很抱歉對這個應用程序的談論很多,但是我可以用它作爲例子。在whatsapp中,當我通過界面顯示的界面顯示流程和服務被終止時,但在幾秒鐘後他們重新啓動,這正是我想要做的,以保持用戶瞭解數據庫事件。從設置你仍然可以停止服務沒有問題,甚至我可以在應用程序本身的選項停止notifiying。

OnDestroy()方法中的一個錯誤實現調用服務的一個實例,以便在銷燬後重新啓動?


UPDATE:韋爾普看起來像我的機構仍然在後臺運行後,我關閉應用程序。我只需要在我的服務設計上工作,不會浪費電池壽命和資源。另外我使用log.i()檢查服務是否正在運行,看起來像主進程關閉時我不能使用日誌或吐司只是通知(仍未實現),因爲服務在那裏運行只是不會顯示日誌。


UPDATE:現在正在使用的工作用startForeground(0,NULL)。將來,我將發送一個通知,以顯示數據庫事件發生時的情況,並調用startForeground(1,notification)。

+0

'忽略任務管理器造成的破壞' - 我希望不會,這將是一個巨大的安全問題。 –

+0

@MartinJames有沒有辦法在不影響安全性的情況下這樣做?即使應用程序本身已關閉並且未在taskmanager中運行,我也看到了使用通知的應用程序。 – AmirG

+0

僅僅不運行的應用程序可以從某些觸發器開始。但是,在用戶明確啓動之前,用戶從設置菜單中殺死的內容不能執行任何操作。 –

回答

2

對於服務,請看設置 - >應用程序 - >服務。並看看它是否在運行。 但是,設計不佳的服務可能更頻繁地運行或執行同步操作。所以是的,這是可能的。

+0

Welp看起來像我的服務仍然在後臺運行後關閉應用程序。我只需要在我的服務設計上工作,不會浪費電池壽命和資源。另外我使用log.i()檢查服務是否正在運行,看起來像主進程關閉時我不能使用日誌或吐司只是通知(仍未實現),因爲服務在那裏運行只是不會顯示日誌。 – AmirG

0

我在開發我的第一款安卓遊戲時遇到了類似這樣的問題;強制停止是殺死它的唯一方法。

START_NOT_STICKY當您將應用程序從任務管理器中滑開時,會終止後臺服務。顧名思義,START_STICKY就是「粘性」,意思是即使應用程序消失,它也會堅持android系統。

無論如何,這是我的經驗。

+0

感謝您的編輯。我從來沒有回答過一個問題!始終打開學習。 – InstaSteve

相關問題