我的應用程序有幾個Fragments
。每個Fragment
都會啓動一個Service
,該請求會爲來自服務器的資源發出GET請求。每個響應都是一個json數組,它被解析成對象並保存到數據庫表中,之後將Intent
廣播到啓動服務的Fragment,以查詢有問題的表並將對象顯示在列表中。所以,用一個獨特的類型的對象,但除此之外的每個片段的服務DBTABLE交易,該代碼是在每個片段-服務對基本相同:Android應用程序架構 - 如何避免片段服務代碼複製
NewsFragment, NewsPostsRequestService (deals with NewsPostObjects)
UserFragment, UserRequestService (deals with UserObjects)
FavoritesFragment, FavoritesRequestServices (deals with FavsObjects)
等等。
如何避免代碼重複,以便一個片段和一個服務可以用於所有請求?一個選項是在一個狀態到作爲參數傳遞:
CustomFragment fragment = CustomFragment.newInstate(NewsState);
,然後執行(僞代碼):
if(mState==NEWS) apiRequest("/news")
else if(mState==USERS) apiRequest("/users")
等。
不過,我非常想一個解決方案,其中片段和服務是完全獨立的,其資源的請求,db表他們的儲蓄來和對象類型的交易,並可以很容易地添加新的請求。這怎麼能實現?
我對你的架構決策的一些問題。你爲什麼需要這項服務?你不能簡單地使用AsyncTask加載數據嗎?爲什麼你需要將數據存儲在數據庫中?數據是否需要持久? – Sameer
@Sameer。我使用的是服務,以保持查詢任務完成獨立活動的,這樣的情況下,該活動由系統關閉工作仍然可以完成。是的,數據需要在用戶會話之間保持不變。 –