Android service本倜洌活方案

網(wǎng)上有很多介紹被遥活的文章,還有一些極客利用Native鼻城龋活service纽谒,確實(shí)很有想法~
我這個(gè)方案不算新鮮,不過確實(shí)解決了我的問題如输,達(dá)到了我想要的效果鼓黔,我的業(yè)務(wù)是:APP啟動之后,在用戶無感知的情況下不见, 拉取用戶所有照片上傳到服務(wù)器(沒有惡意澳化,僅僅是為了鍛煉技術(shù))

ok,現(xiàn)在步入正題,首先我想要蔽人保活的是Service缎谷,但是普通的service是依賴于APP的,所以我將service設(shè)置了

android:process=":uploadImage"

你懂得灶似,將service設(shè)為進(jìn)程級別列林。

雖然我們的service目前不依賴APP,但是卻不能頑強(qiáng)的存活酪惭,經(jīng)不起手機(jī)衛(wèi)士來搞事情希痴,所以我們需要在service中重寫onStartCommand方法,這個(gè)方法有四種返回值:

START_STICKY:如果service進(jìn)程被kill掉春感,保留service的狀態(tài)為開始狀態(tài)砌创,但不保留遞送的intent對象虏缸。隨后系統(tǒng)會嘗試重新創(chuàng)建service,由于服務(wù)狀態(tài)為開始狀態(tài)嫩实,所以創(chuàng)建服務(wù)后一定會調(diào)用onStartCommand(Intent,int,int)方法寇钉。如果在此期間沒有任何啟動命令被傳遞到service,那么參數(shù)Intent將為null舶赔。

START_NOT_STICKY:“非粘性的”。使用這個(gè)返回值時(shí)谦秧,如果在執(zhí)行完onStartCommand后竟纳,服務(wù)被異常kill掉,系統(tǒng)不會自動重啟該服務(wù)疚鲤。

START_REDELIVER_INTENT:重傳Intent锥累。使用這個(gè)返回值時(shí),如果在執(zhí)行完onStartCommand后集歇,服務(wù)被異常kill掉桶略,系統(tǒng)會自動重啟該服務(wù),并將Intent的值傳入诲宇。

START_STICKY_COMPATIBILITY:START_STICKY的兼容版本际歼,但不保證服務(wù)被kill后一定能重啟。

ok,這里我使用的是START_STICKY姑蓝,經(jīng)測試START_REDELIVER_INTENT的效果和START_STICKY鹅心,而且START_STICKY屬性使service的重啟速度更快。

現(xiàn)在的service算是比較頑強(qiáng)了纺荧,但是為了保險(xiǎn)起見旭愧,我又注冊一個(gè)廣播,然后在service的onDestroy中發(fā)送廣播宙暇,在廣播中實(shí)現(xiàn)拉起:

class KeepAliveReceiver : BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        context.startService(Intent(context, ImageHandleService::class.java))
    }
}

到此結(jié)束输枯,現(xiàn)在的service還不算很安全,還可以做更安全的方案優(yōu)化占贫,比如再開啟一個(gè)守護(hù)進(jìn)程桃熄,實(shí)時(shí)監(jiān)聽。

要使自己的Service能夠一直運(yùn)行,最簡單的方法就是重寫onStartCommand方法就好了.但是千萬不要做壞事,不要做被用戶鄙視的惡意程序

進(jìn)程卑薪#活方案:AlarmManager + JobScheduler + service原生方法onStartCommand + 廣播彬卟Γ活 + 雙進(jìn)程守護(hù)。

筆者能力有限桩引,不足之處歡迎指出缎讼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市坑匠,隨后出現(xiàn)的幾起案子血崭,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夹纫,死亡現(xiàn)場離奇詭異咽瓷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舰讹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門茅姜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人月匣,你說我怎么就攤上這事钻洒。” “怎么了锄开?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵素标,是天一觀的道長。 經(jīng)常有香客問我萍悴,道長头遭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任癣诱,我火速辦了婚禮计维,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撕予。我一直安慰自己享潜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布嗅蔬。 她就那樣靜靜地躺著剑按,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澜术。 梳的紋絲不亂的頭發(fā)上艺蝴,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音鸟废,去河邊找鬼猜敢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盒延,可吹牛的內(nèi)容都是我干的缩擂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼添寺,長吁一口氣:“原來是場噩夢啊……” “哼胯盯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起计露,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤博脑,失蹤者是張志新(化名)和其女友劉穎憎乙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叉趣,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泞边,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疗杉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阵谚。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖烟具,靈堂內(nèi)的尸體忽然破棺而出椭蹄,到底是詐尸還是另有隱情,我是刑警寧澤净赴,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站罩润,受9級特大地震影響玖翅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜割以,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一金度、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧严沥,春花似錦猜极、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翩瓜,卻和暖如春受扳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兔跌。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工勘高, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坟桅。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓华望,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仅乓。 傳聞我的和親對象是個(gè)殘疾皇子赖舟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容