01
什么是「ANR」?
ANR(Application Not Responding)是Android應(yīng)用程序常見的錯誤之一,指的是應(yīng)用程序無法響應(yīng)用戶的輸入或操作,表現(xiàn)為應(yīng)用程序卡死或無響應(yīng),可能導(dǎo)致應(yīng)用程序崩潰或出現(xiàn)錯誤。當(dāng)ANR發(fā)生時,系統(tǒng)會彈出一個對話框提示用戶等待應(yīng)用程序響應(yīng)或強制關(guān)閉應(yīng)用程序。
02
為什么一定要減少ANR?
APP頻繁出現(xiàn)無響應(yīng)時,會嚴重影響用戶使用體驗和留存率,也會影響廣告展示頻次和廣告收益。此外,對于Google Play海外開發(fā)者來說,在Google Play控制臺中,有一個Android Vitals儀表板,能夠顯示崩潰率、ANR率,Google Play在對APP進行排名時會考慮APP的性能,包含太多錯誤、滯后信息的應(yīng)用程序?qū)⒉粫煌扑]。因此,無論是基于優(yōu)化應(yīng)用商店ASO還是提升廣告變現(xiàn)的需要,解決ANR問題都至關(guān)重要。
03
導(dǎo)致用戶手機出現(xiàn)ANR的原因
·手機的內(nèi)存出現(xiàn)將近耗盡的狀態(tài)
·手機的CPU的使用率已經(jīng)到瓶頸的狀態(tài)
·App可能在短時間內(nèi)出現(xiàn)大量在主線程執(zhí)行的任務(wù),導(dǎo)致在5秒內(nèi)無法響應(yīng)應(yīng)用程序正常UI操作
因為APP內(nèi)接入廣告會加大對手機內(nèi)存的占用,從而提升ANR發(fā)生的可能性。所以在廣告變現(xiàn)方案的設(shè)置上就開始優(yōu)化,能保證APP廣告變現(xiàn)的同時,降低ANR。
04
Google Play海外開發(fā)者
如何優(yōu)化ANR?
TopOn能為開發(fā)者提供變現(xiàn)方案咨詢,提供的定制化解決方案,指導(dǎo)開發(fā)者進行個性化設(shè)置,更有針對性地優(yōu)化ANR。Google Play海外開發(fā)者可以借助以下步驟進行基礎(chǔ)設(shè)置,并在文末獲取完整代碼方案,減少ANR情況的發(fā)生。
1、將耗時操作移至后臺線程
將廣告SDK執(zhí)行的初始化、加載、展示邏輯統(tǒng)一放到一條固定的子線程中執(zhí)行,減少在UI線程的執(zhí)行邏輯。
2、控制廣告展示數(shù)量和時機
針對實際的業(yè)務(wù)場景,控制啟動時加載廣告?zhèn)€數(shù),可首先加載應(yīng)用首頁會出現(xiàn)的廣告,然后再安排其他廣告位的加載時機。
針對機子的CPU使用率,網(wǎng)絡(luò)速度,限制當(dāng)前廣告加載的個數(shù),不能讓廣告在性能緊缺的時候繼續(xù)觸發(fā)廣告的加載,等內(nèi)存占用和CPU使用率有所下降或者廣告請求完成之后再觸發(fā)下一次的廣告的加載。
注意:網(wǎng)絡(luò)不可用場景直接不執(zhí)行廣告加載,因為即便無網(wǎng)的情況執(zhí)行請求會損耗App的CPU和內(nèi)存,所以無網(wǎng)情況下不建議做廣告請求的動作。
3、進行流量分組
TopOn會根據(jù)開發(fā)者不同的APP線上出現(xiàn)ANR問題的機型,Android版本,手機總內(nèi)存,CPU核數(shù),定制不同的流量分組方案,例如:定制廣告位的緩存數(shù),定制并行請求數(shù)量等等??梢宰尦霈F(xiàn)問題的機型減少性能的消耗,從而減少ANR的發(fā)生。
05
ANR優(yōu)化案例
某清理工具類APP
優(yōu)化前
APP使用大量的場景進行廣告位展示,以及頻繁的廣告請求頻次,會導(dǎo)致CPU的占有率一直處于比較高的狀態(tài):
優(yōu)化后
當(dāng)使用TopOn技術(shù)定制集成方案之后,該清理類APP的平均的CPU占有率下降到較低的水平:
而同一時間內(nèi)的廣告展示沒有因為使用了該方案而下降,大大減少了廣告請求展示給APP帶來的負擔(dān)。
經(jīng)過流量驗證后,該應(yīng)用出現(xiàn)ANR概率減少了10%~30%,針對具體的業(yè)務(wù)場景再調(diào)整具體的集成方式后,整體應(yīng)用ANR率已低于Google Play的0.47%的ANR標準。