簡體   English   中英

如何設計可從Android應用程序中的所有活動訪問的庫?

[英]How to design library to be accessible from all activities in Android application?

我正在制作一個Android庫,該庫接受來自用戶的數據並進行一些后台工作。

現在,與客戶端應用程序直接交互的類具有私有對象和供客戶端應用程序調用的公共靜態方法(我在singleton pattern選擇了static)。 它還要求客戶端應用程序在首次使用該庫時調用initialize()方法。

這取決於客戶端應用程序知道哪個活動被首先調用。 如果他們的應用程序可以在許多不同的活動上啟動,則會引發問題。

我的選擇:

  1. 強制用戶在每個活動中進行初始化,並在內部維護該庫是否已初始化。
  2. 遵循不同的設計模式。

我是否以錯誤的方式處理此問題? 圖書館的良好設計習慣是什么?

一個安全的假設是認為開發人員知道什么活動將啟動應用程序,但是如果有人決定在不知道的情況下使用您的庫,則可以使初始化過程有些智能。

例如,您可以在庫中添加一個布爾值標志,以跟蹤其是否已初始化。 這樣,您可以使用一些函數來返回此值。 如果為true,則說明庫已經初始化,如果尚未初始化,則說明已初始化。

似乎有點笨重,但它只需要任何潛在啟動活動的onCreate()函數中的if語句即可,如果未初始化該庫,則對其進行初始化。

或者也許這樣做,以便用戶可以根據需要多次調用Initialize函數,但要跟蹤該布爾值。 將if語句放在initialize函數中,如果已經初始化,則什么也不做。

這樣,程序員要做的就是放置一個

someLibrary.initialize();

在每個活動的每個onCreate()方法中。 實際初始化之后,每個后續調用均不執行任何操作。

另外,順便說一句,嘗試以不需要初始化方法的方式更改代碼可能值得您花些時間。 初始化函數到底做什么?

我認為Application類是我想要的。 謝謝amalBit。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM