您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Android app啟動節點與上報啟動的方法”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Android app啟動節點與上報啟動的方法”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
經常利用content provider 和Androidx里的 startup庫來對庫進行初始化操作,那么app啟動關鍵方法的執行順序是什么樣的呢? 怎么樣控制我的庫的啟動順序?
參考這篇文章: Android 多個 ContentProvider 初始化順序
精髓在這張圖里:
回答上面的問題: 怎么樣控制我的庫的啟動順序?
推薦用contentprovider,設置initOrder.
不推薦用startup,因為它只能在dependices()回調里通過依賴來控制,是強依賴,不夠靈活
從第一個contentProvider的attachInfo,到第一個頁面的onReusme:
app-start-foreground-background-traces:https://firebase.google.com/docs/perf-mon/app-start-foreground-background-traces?authuser=0&platform=android
App start trace
This trace measures the time between when the user opens the app and when the app is responsive. In the console, the trace's name is _app_start. The collected metric for this trace is "duration".
Starts when the app's FirebasePerfProvider ContentProvider completes its onCreate method.
Stops when the first activity's onResume() method is called.
Note that if the app was not cold-started by an activity (for example, by a service or broadcast receiver), no trace is generated.
看一下FirebasePerfProvider的配置:
initOrder="101",基本是最大的. 項目里其他的Provider都沒有怎么配置initOrder
<provider android:name="com.google.firebase.perf.provider.FirebasePerfProvider" android:authorities="${applicationId}.firebaseperfprovider" android:exported="false" android:initOrder="101" />
可以自己搞個類似的trace打印/上報一下
<provider android:name="com.xxx.logs.AppStartMeasurer" android:authorities="${applicationId}.AppStartMeasurer" android:exported="false" android:initOrder="102" />
然后就可以看logcat的日志輸出+ trace平臺的統計了
adb 命令:
adb shell am start -W 包名/入口activity全類名
在控制臺會輸出日志:
這里的時間會比方案1統計到的時間小一些
讀到這里,這篇“Android app啟動節點與上報啟動的方法”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。