1

我正在編寫一些庫代碼,作爲jar文件分發,開發人員在使用前需要使用應用程序ID進行初始化。初始化僅僅是一個函數調用,就像Android中的全局初始化

MyLibrary.initialize("16ea53b"); 

棘手的是,我不知道如何指導開發人員,使這個初始化調用。起初,我認爲主要活動中的一個靜態初始化塊將是最簡單的方法。問題是用戶可以通過其他活動或意圖進入應用程序,並且主要活動不會被加載。是否有一種通用的方法來確保在應用程序啓動時運行一行代碼,而不管應用程序的啓動方式如何?

初始化調用是冪等的,所以我可以告訴人們在它可以使用的每個地方進行初始化調用,但那會很麻煩。

回答

0

一個簡單的方法是在庫代碼初始化時將某些內容保存在SharedPrefences中。然後,無論您認爲重要的地方,您都可以檢查該值,如果存在或繼續進行初始化或任何其他操作(錯誤消息等),請繼續。這也可以讓你的開發人員不必多次初始化。

務必向開發人員提供一個API來重置此值。

此外,here是一個很好的API設計,可以幫助你,由約書亞布洛赫談。

+0

我想我如何讓我的庫訪問SharedPreferences具有相同的問題 - 我需要讓開發人員使用有效的上下文初始化庫以便訪問SharedPreferences。還是有另一種方法來訪問應用程序對象?順便說一句,這是一個很棒的演講。 – lacker

+0

根據Android的指導原則,我們可以從Application類中繼承子類,從而使用它來存儲/維護全局數據或使用靜態單例類。我個人使用過Application對象。所以是的,您的開發人員使用有效的Context初始化庫的方法是有道理的。我想知道更多關於這方面的其他機制。 – omermuhammed

+0

我仍然有同樣的問題 - 開發人員在哪裏使用上下文初始化庫?他們必須從每個可能開始申請的班級開始。 – lacker

0

這聽起來像一個問題,可以通過擴展創建一個擴展Application並將其放在那裏的類來解決,這對整個Application來說是全局的。

+0

對於一個單獨的應用程序,這是有道理的。對於圖書館開發人員,我寧願不向每個用戶解釋如何繼承應用程序。 – lacker