0

我正在製作一個Android庫,它接受來自用戶的數據並執行一些後臺工作。如何設計庫可以從Android應用程序的所有活動訪問?

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

這依賴於客戶端應用程序知道首先調用哪個活動。如果他們的申請可以從許多不同的活動開始,那就引發了一個問題。

我的選擇:

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

上午我這個接近走錯了路?圖書館的好設計實踐是什麼?

+1

在android中有一些稱爲應用程序類的東西。這門課對所有的活動都很常見。只是一個建議。 – amalBit

+0

嘗試使用方法時懶惰地初始化它? –

回答

1

這將是一個安全的假設認爲,開發者會知道是什麼活動將啓動應用程序,但如果有人決定使用你的庫的情況下,他們不知道,你可以做初始化過程有些智能。

舉例來說,你可以在其中跟蹤它是否已初始化庫中添加一個布爾標誌。這樣你可以有一些函數返回這個值。如果這是真的,則該庫已經被初始化,如果沒有初始化它的話。

這似乎有點笨重,但它會採取什麼比一個更簡單的,如果任何潛在的啓動活動的onCreate()函數語句,如果庫沒有初始化,然後對其進行初始化。

或許讓這個用戶可以調用初始化函數多次,因爲他們想要的,但保持跟蹤的布爾值。將if語句放在初始化函數中,如果已經初始化,則不執行任何操作。

這樣一來,所有的程序員必須做的是地方

someLibrary.initialize(); 

在每個所討論活動的每個onCreate()方法。一旦它被實際初始化,每個後續的呼叫都不做任何事情。

此外,在一個側面說明,它可能是值得你去改變你的代碼以這樣的方式,一個初始化方法是沒有必要的。初始化函數到底做了什麼?

相關問題