android.app.RemoteServiceException 的神坑異常

最近終于有時(shí)間來整理一下代碼 修修bug

然后發(fā)現(xiàn)有一樣這樣的問題,占據(jù)了差不多10%的安卓用戶毡庆,以vivo坑赡、OPPO 、榮耀么抗、華為入門機(jī)居多毅否。我手上4臺機(jī)器怎么都復(fù)現(xiàn)不出來,真不知道國產(chǎn)廠商做了啥

我們知道 Android 8.0之后規(guī)定服務(wù)一定要前臺顯示蝇刀,不允許直接使用startService螟加,需要用前臺方式啟動(dòng),然后在服務(wù)里面在通知欄里搞個(gè)通知顯示出來熊泵,說明服務(wù)正在運(yùn)行仰迁。

RemoteServiceException異常設(shè)備分布

然后我們看異常信息就這么一句話

Context.startForegroundService() did not then call Service.startForeground()

啥也沒了!啥也沒了顽分!啥也沒了徐许!

Context.startForegroundService() did not then call Service.startForeground()

就是說調(diào)用startForegroundService啟動(dòng)服務(wù),但是沒有在服務(wù)里面調(diào)用startForeground()前臺顯示(我明明就調(diào)用了卒蘸!竟然說我每調(diào)用)

那就搜源碼看看雌隅,然后發(fā)現(xiàn)有兩個(gè)類似的地方,出現(xiàn)了這句話缸沃。但是我這樣異常沒有冒號也沒有ServiceRecord恰起。(知道為什么的小伙伴請務(wù)必告訴一下我唄)

不過有冒號的這兩種異常日志系統(tǒng)確實(shí)也有收集,有很多趾牧,估計(jì)這日志收集把ServiceRecord這個(gè)里面的東西也歸類了吧


Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{2d10c40 u0)

既然有那就一起看检盼、出現(xiàn)Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord的原因有下面兩個(gè)

一個(gè)是Context.startForegroundService服務(wù)啟動(dòng)后沒有調(diào)用Service.startForeground(),5秒內(nèi) 服務(wù)執(zhí)行完畢 服務(wù)結(jié)束翘单、就產(chǎn)生Crash這個(gè)異常

Crash

另外一個(gè)是Context.startForegroundService啟動(dòng)服務(wù)后吨枉、5秒后都沒有調(diào)用Service.startForeground()就爆ANR

ANR

看完這兩個(gè)原因我就很懵逼了蹦渣。

因?yàn)槲襑elcomeActivity 十分簡單?onCreate沒啥東西 然后獲取了一下權(quán)限 ?就openHome了

WelcomeActivity
WelcomeActivity

判斷了一下是否在運(yùn)行、就直接啟動(dòng)了

工具類

然后服務(wù)里面就Service.startForeground()貌亭,通道我也是每個(gè)服務(wù)new一個(gè)的啊柬唯,ID我是一個(gè)服務(wù)一個(gè)ID,啟動(dòng)之前我也通過EventBus把萬一有的其他這個(gè)AppUpdateService個(gè)停止了圃庭,理論上不會重復(fù)了

服務(wù)


停止AppUpdateService

然后我們再看詳細(xì)的崩潰日志


結(jié)果還真超過了5秒锄奢,有些還10幾秒 20幾秒 ,然后看回代碼發(fā)現(xiàn)context.startForegroundService(intent);之后就是隔了5秒以上 服務(wù)才執(zhí)行onCreate 然后再startForeground已經(jīng)為時(shí)已晚

這就有點(diǎn)尷尬了正常測試發(fā)現(xiàn)每次都是幾十毫秒就執(zhí)行的剧腻,但是日志顯示這些手機(jī)確實(shí)是超過5秒以上才啟動(dòng)的 坑拘央!

所以到此android.app.RemoteServiceException?Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord 的原因我已經(jīng)找到了

至于為什么會這樣我還要好好研究一下ams了,因?yàn)槲曳?wù)并沒有做什么東西只發(fā)了一個(gè)請求恕酸,歡迎頁也是很簡單堪滨。不過我發(fā)現(xiàn)就是這些國產(chǎn)手機(jī)胯陋,安裝更新的時(shí)候蕊温,原來的服務(wù)、activity好像是沒有殺死的遏乔。然后這里會導(dǎo)致Notification ID重復(fù)

總結(jié)

1.調(diào)用startForeground();的時(shí)候ID不要重復(fù)

2.調(diào)用startForeground();的時(shí)候ID不能為零义矛!

3.服務(wù)啟動(dòng)后優(yōu)先調(diào)用startForeground();

4.onStartCommand這個(gè)東西保活的時(shí)候盟萨,有寫的不好就會產(chǎn)生第一點(diǎn)的重復(fù)

5.NotificationChannel這個(gè)東西每次要new出來getNotificationChannel可能會不太好

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凉翻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捻激,更是在濱河造成了極大的恐慌制轰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胞谭,死亡現(xiàn)場離奇詭異垃杖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丈屹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門调俘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旺垒,你說我怎么就攤上這事彩库。” “怎么了先蒋?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵骇钦,是天一觀的道長。 經(jīng)常有香客問我竞漾,道長眯搭,這世上最難降的妖魔是什么皇忿? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮坦仍,結(jié)果婚禮上鳍烁,老公的妹妹穿的比我還像新娘。我一直安慰自己繁扎,他們只是感情好幔荒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梳玫,像睡著了一般爹梁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上提澎,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天姚垃,我揣著相機(jī)與錄音,去河邊找鬼盼忌。 笑死积糯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谦纱。 我是一名探鬼主播看成,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跨嘉!你這毒婦竟也來了川慌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤祠乃,失蹤者是張志新(化名)和其女友劉穎梦重,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亮瓷,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡琴拧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寺庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艾蓝。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斗塘,靈堂內(nèi)的尸體忽然破棺而出赢织,到底是詐尸還是另有隱情,我是刑警寧澤馍盟,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布于置,位于F島的核電站,受9級特大地震影響贞岭,放射性物質(zhì)發(fā)生泄漏八毯。R本人自食惡果不足惜搓侄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望话速。 院中可真熱鬧讶踪,春花似錦、人聲如沸泊交。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廓俭。三九已至云石,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間研乒,已是汗流浹背汹忠。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雹熬,地道東北人宽菜。 一個(gè)月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像橄唬,于是被迫代替她去往敵國和親赋焕。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

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