如何保證Service不被第三方殺毒軟件殺死

第一種方式

我們可以提升Service的優先級來防止被殺除,就是使用前臺Service來實現(360就是這麼做的)

第二種

我們可以通過監聽廣播的方式實現,就是我們定義一個廣播接收器,在這個接收器裏面監聽一些系統廣播(比如:Intent.ACTION_TIME_TICK,這個廣播每分鐘發送一次,),一旦收到這些廣播之後,就去查看我們的服務Service有沒有被啓動,如果沒有啓動的話,則啓動就可以了。

第三種

在Service的onDestroy方法中,調用startService進行Service的重啓。

第四種

守護進程:守護進程一般在系統啓動時開始運行,除非強行終止,否則直到系統關機都保持運行。

守護進程的三個特點:後臺運行 獨立於終端 完成一定任務

守護進程必須與運行前的環境隔離開來。環境包括以下幾點:

1.在後臺運行(這是爲避免掛起控制終端將守護進程放入後臺執行。方法是在進程中調用 fork() 使父進程終止, 讓守護進行在子進程中後臺執行。)

2.脫離控制終端、登錄會話和進程組{進程屬於一個進程組(進程組號和進程組長進程號)登錄會話可以包含多個進程組。這些進程組共享一個控制終端。}

3. 改變當前工作目錄(進程活動時,其工作目錄所在的文件系統不能卸下。一般需要將工作目錄改變到根目錄。)

4.禁止進程重新打開控制終端(進程已經成爲無終端的會話組長,重新申請打開一個控制終端。)

5.關閉打開的文件描述符 (進程從創建它的父進程那裏繼承了打開的文件描述符。)

守護進程實例包括兩部分:主程序test.c和初始化程序init.c。主程序每隔一分鐘向/tmp目錄中的日誌test.log報告運行狀態。初始化程序中的init_daemon函數負責生成守護進程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章