我正在研究可嵌入Android APK內的解決方案或代碼,以跟蹤應用程序啓動的次數以及應用程序的運行時間。我知道一種方法是使用API 14中的ActivityLifecycleMethods以及較低版本的Android,將代碼放置在所有Activity Lifecycle事件中或通過提供基本Activity類。Android - 確定應用程序啓動和總時間爲最佳活動
1)有沒有一種方法來鉤住ActivityLifecycleMethods,而開發人員不必在將附加代碼放入其應用程序之前對其代碼進行任何更改?
我相信這個答案是沒有,因爲即使是一個枚舉單例,它不會被加載,直到它被引用。當活動改變時使用不同的類加載器,一旦活動改變,Enum Singleton也將消失。
如果我想保留Enum Singleton,可以存儲對applicationContext的引用,因此當Activity改變時它不會被刪除。這是什麼谷歌意味着 「通常沒有必要繼承應用程序。在大多數情況下,靜態單例可以提供相同的功能以更模塊化的方式。如果你的單身需要全局上下文(例如註冊廣播接收器),檢索它的函數可以被賦予一個Context,它在第一次構建單例時在內部使用Context.getApplicationContext()。「 on http://developer.android.com/reference/android/app/Application.html
2)我不喜歡這個解決方案適用於較老的API版本。看起來很可能開發人員可能忘記修改他們的Activity Lifecycle方法或忘記從創建的BaseActivity繼承。這些舊平臺還有其他獨特的解決方案嗎?有沒有其他方法可以確定活動何時未運行?可能是以下任何一項工作:
a)使用類加載器以確保基本活動與適當的指標總是使用 b)實施某種類型的心跳。如果應用暫停或死亡,計時器是否會停止工作?有沒有其他的方法?可以使用ActivityManager嗎?
我一直希望找到一種方法,讓開發人員儘可能地編寫和維護儘可能少的代碼。隨着開發人員調用開始應用程序和結束應用程序,開發人員很容易添加新的入口和出口點,並錯過向庫添加相應的調用。它只是提供更好的開發者體驗來提供更少的代碼。我只是不確定是否有可行的選擇。 – AnDev123 2014-10-31 20:08:14